WPF/Silverlight : How to DataTrigger a Storyboard Animation in MVVM?

标签 wpf xaml mvvm

我有一个名为 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/

相关文章:

c# - 在 WPF 应用程序中使用 reCaptcha

c# - 如何在 XAML 中显示递归属性

c# - 将 ListView 滚动到顶部 ItemsSource Changed 被意外调用

wpf - 如何阻止在 DotNetBrowser 中加载远程内容?

c# - 如何从异常(随机出现的 C# WPF)中获取更多信息?

c# - Windows 应用商店应用程序应用栏按钮文本绑定(bind)

c# - DataGrid过滤,多输入,MVVM,C#

c# - 在两个或多个 ListView 之间绑定(bind) ListView SelectedItem

c# - WPF 元素的可视化工具

xaml - Win 8.1 metro 枢纽导航