是否有办法将触发器(和后续动画)附加到具有属性数据绑定的控件,并在该数据绑定属性的值发生更改时触发该触发器(到任何值)。我不在乎它有什么价值,我只是想在价值改变的时候显示一个通知。当数据绑定属性更改为* any *时显示动画值
可能很明显,但我没看到它。
是否有办法将触发器(和后续动画)附加到具有属性数据绑定的控件,并在该数据绑定属性的值发生更改时触发该触发器(到任何值)。我不在乎它有什么价值,我只是想在价值改变的时候显示一个通知。当数据绑定属性更改为* any *时显示动画值
可能很明显,但我没看到它。
最简单的方法是在您手动引发的ViewModel中为此添加一个额外的事件,并将您的EventTrigger绑定到该事件上。你有一个ViewModel,不是吗? ;)
要做到这一点完全在XAML中,你需要使用一个EventTrigger,但请记住:
可以使用。如果目标是触发关闭绑定,您可以使用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事件。
嗯,是的。我曾想到过,但我想看看是否有更通用的方法。 另外:需要一些额外的事件的眼睛糖果:糟透了。 – Inferis 2010-06-01 12:56:01