WPF/Silverlight:如何在MVVM中触发情节提要动画?

WPF/Silverlight:如何在MVVM中触发情节提要动画?,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我有一个名为IsLoginWrong的布尔属性,如果IsLoginWrong为真,我想播放情节提要动画。(IsLoginRong执行OnPropertyChanged事件,因此我知道绑定是可以的)但是我在语法方面遇到了困难。这甚至可能不正确,但我认为datatriggers只能活在样式中 <UserControl.Style> <Style> <Style.Triggers> <DataTrigger Bi

我有一个名为IsLoginWrong的布尔属性,如果IsLoginWrong为真,我想播放情节提要动画。(IsLoginRong执行OnPropertyChanged事件,因此我知道绑定是可以的)但是我在语法方面遇到了困难。这甚至可能不正确,但我认为datatriggers只能活在样式中

<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>

但这引发了一个异常“样式中的情节提要树不能指定TargetName”。。。因为样式不能专门指物品。。令人惊叹的。那我该怎么做我想做的事呢?(如果mvvm中的布尔值发生更改,则播放动画)


感谢您在一个样式中不能引用故事板名称。因此,我的工作方式是将你的故事板推进到实际风格中:

<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
放入样式或控件模板中,因此可能有更好的方法使用控件模板来实现这一点。但这就是我目前的想法。

一个选项是使用VisualStateManager启动故事板。上的文章解释了如何使用附加属性从视图模型控制VisualStateManager的当前状态。

正是我想要的。谢谢。遗憾的是,没有更简单的方法。5年后回顾这一点,mvvm可能是我职业生涯中最大的时间浪费。最好在代码中这样做。