是否有办法将触发器(和后续动画)附加到具有属性数据绑定的控件,并在该数据绑定属性的值更改(为任意值)时触发该触发器。我不在乎它是什么价值,我只想在价值变为其他东西时显示通知。
可能非常明显,但我没有看到它。
答案 0 :(得分:2)
要在XAML中完全执行此操作,您需要使用EventTrigger,但请记住:
如果目标是触发Binding,则可以使用Binding.TargetUpdated路由事件。为了引发此事件,必须将NotifyOnTargetUpdated = True添加到绑定表达式中。现在,每次更新绑定表达式的目标时,都会播放指定的动画。
<TextBox Text={Binding ... NotifyOnTargetUpdated=True}>
<TextBox.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard AutoReverse="True" BeginTime="0:0:0" Duration="0:0:0.5">
<ColorAnimation
Storyboard.TargetProperty="(TextBox.Background).(SolidColorBrush.Color)"
From="White"
To="Lavender"
/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</TextBox.Triggers>
</TextBox>
此外,您可以通过指定特定事件来优化触发动画的方式和时间,无论应用何种绑定。例如,要仅在Text属性更改时触发动画,请改为使用TextBox.TextChanged事件。
答案 1 :(得分:0)
最简单的方法是在您手动引发的ViewModel中添加一个额外的事件,并绑定EventTrigger。你有一个ViewModel,不是吗? ;)