Я хочу иметь возможность установить свойство с помощью EventTrigger, с этим есть ряд проблем.
1) EventTrigger поддерживает только действия, поэтому я должен использовать 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, поскольку эта логика будет использоваться в настраиваемом элементе управления и относится только к пользовательскому интерфейсу.