我有一个名为 IsLoginWrong 的 bool 属性,如果 IsLoginWrong 为真,我想播放 Storyboard动画。 (IsLoginWrong 做了一个 OnPropertyChanged 事件,所以我知道绑定(bind)没问题)但是我很难使用语法。这甚至可能不对,但我认为数据触发器只能存在于 Styles 中......
<UserControl.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsLoginWrong}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource LoginWrong}"/>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Style>
但这会引发异常“样式中的 Storyboard 树无法指定 TargetName”......因为样式不能专门引用项目......太棒了。那么我该如何做我想做的事情呢? (如果 mvvm 中的 bool 值发生变化,则播放动画)
谢谢
最佳答案
在样式中,您不能引用 Storyboard 名称。所以我让它工作的方式是将你的 Storyboard推到实际的风格中:
<UserControl.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsLoginWrong}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
.... PUT YOUR ACTUAL STORY BOARD IN HERE ...
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Style>
现在
DataTriggers
可以放入样式或控件模板中,因此使用控件模板可能会有更好的方法。但这是我暂时想到的。
关于WPF/Silverlight : How to DataTrigger a Storyboard Animation in MVVM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236432/