Я хочу иметь возможность установить свойство с EventTrigger, там есть ряд проблем.
1) EventTriggers поддерживает только действия, поэтому я должен использовать storyBoard для установки моих свойств.
2) Как только я использую раскадровку, у меня есть два варианта:
- Остановить: как только анимация остановилась, значение вернется обратно до начала анимации.
- HoldEnd: это блокирует свойство, так что ни код, ни взаимодействие пользователя не могут изменять свойство, которое поддерживает анимация.
В приведенном ниже примере я хочу установить для свойства IsChecked значение False, когда нажимается кнопка, и я хочу, чтобы пользователь мог изменить IsChecked и/или я хочу изменить свойство в коде.
Пример:
<EventTrigger
SourceName="myButton"
RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames
Storyboard.TargetName="myCheckBox"
Storyboard.TargetProperty="IsChecked"
FillBehavior="Stop">
<DiscreteBooleanKeyFrame
KeyTime="00:00:00"
Value="False" />
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
Я понимаю, что после завершения раскадровки я могу использовать событие "Завершено", чтобы установить значение False. Однако в этом случае я хочу содержать логику в XAML, так как эта логика будет использоваться в пользовательском элементе управления и специфична только для пользовательского интерфейса.