WPF/Silverlight:如何在MVVM中使用DataTrigger故事板动画?

for*_*yez 6 wpf xaml mvvm

我有一个名为IsLoginWrong的布尔属性,如果IsLoginWrong为true,我想播放一个故事板动画.(IsLoginWrong执行OnPropertyChanged事件,所以我知道绑定没问题)但是我的语法很难.这可能不是正确的,但我认为数据触发器只能存在于样式中......

<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>
Run Code Online (Sandbox Code Playgroud)

但是这引发了一个异常"Style中的故事板树无法指定TargetName"... beause样式无法专门引用项目..真棒.那我怎么做我想做的事情呢?(如果布尔值在mvvm中发生变化,则播放动画)

谢谢

for*_*yez 12

在样式中,您无法引用故事板名称.所以我开始工作的方式是在实际风格中推动你的故事板:

<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>
Run Code Online (Sandbox Code Playgroud)

现在DataTriggers可以将其放入样式或控件模板中,因此使用控件模板可能有更好的方法.但这是我暂时想出来的.