请问WPF中storyboard如何用datatrigger触发??

god_00544 2018-02-10 05:11:33
我是用的BLEND直接创建的storyboard,系统在window资源下生成的代码如下

<Window.Resources>
<Storyboard x:Key="Storyboard1">
------------------------
</Storyboard>
</Window.Resources>


然后我想在程序运行过程中,监控某个变量,当该变量为指定值时,触发动画。但是我发现在blend里面只能利用控件的事件来触发,比如鼠标点击某个button才能触发storyboard,比如

<Window.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click" SourceName="button1">
<BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
</EventTrigger>
</Window.Triggers>

所以我按照书上关于datatrigger的例子改了一下上面的代码
<Window.Triggers>
<DataTrigger Binding="{Binding jiaodu}" Value="50">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
</DataTrigger.EnterActions>
</DataTrigger>
</Window.Triggers>
发现不能运行,会报错“Triggers 集合成员必须是类型Eventtrigger”,我现在是用了一个笨方法去解决的,就是监控这个变量为指定值后,用代码去直径button的点击动作,间接的触发storyboard,但是我觉得这个解决方法不好,新手不知道该如何解决,请大家赐教。
...全文
1245 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shushukui 2018-03-08
  • 打赏
  • 举报
回复
给你一个例子,自己看看吧。

 <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True" />
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard Storyboard.TargetName="txtTitle" Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)">
                                <ColorAnimation To="#FF04dc5b" Duration="0:0:0.3"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.EnterActions>
                    <MultiDataTrigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard Storyboard.TargetName="txtTitle" Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)">
                                <ColorAnimation To="White" Duration="0:0:0.3"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.ExitActions>
                </MultiDataTrigger>
exception92 2018-02-23
  • 打赏
  • 举报
回复
在变量 改变的时候使用类似FindResource方法 找到storyboard再进行执行。
在Windows系统,notepad.exe(记事本)是一个“经典的”、“简洁的”文本编辑器。这个软件,没有华丽的外观,也没有繁杂的功能,仅仅是一个文本编辑小软件。虽然经过Windows系统数十年的变换,但它却保持着永恒姿态,数十年来几乎不曾改变过。曾经,VS的经典DEMO,就有它的身影,一个新建的项目,就藏有一个新建的“记事本”。然而,在WPF的项目,“记事本”却消失的无影无踪,也许是很容易实现,也许是为了革新,而不愿再传承“经典”。确实,使用WPF技术再次让“记事本”复活,确实也是一件非常容易的事情。但是,如果,使用WPF技术,再搭配当下非常流行的MVVM模式呢?复活“记事本”的难度却陡然上升至很多WPF程序员为之默默叹气。而,MVVM模式是掌握WPF的最顶级技术,MVVM模式拥有的无尽的优势,让WPF相对于过往的编程模式来说,是一种革命性的创新,从而也成为大WPF项目必须的模式。但,学习难度。。。。。。在这个《WPF记事本开发详解》的课程,赵老师带领你在WPF,从零开始一步步构建MVVM模式,直到让你亲自以WPF+MVVM的方式,让这个经典的“记事本”软件从你的手“复活”。在课程,赵老师会详细讲解WPF和MVVM的各种技巧,让你从此爱上WPF+MVVM编程。

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧