Blend是WPF/SL开发人员的利器, 你可以在美工板上绘制形状、路径和控件,然后修改其外观和行为,你也可以导入图像、视频和声音等等。 今天我给大家演示如何用Blend中提供的ControlStoryboardAction行为来控制Storyboard(情节提要)。环境为Blend3+win7.
1.打开Blend, 创建wpf工程,默认为WpfApplication1. 如下图:
[![1](https://box.kancloud.cn/2016-02-02_56b00159c3d3a.gif "1")](http://hi.csdn.net/attachment/201006/22/1278723_1277187306Kfab.png)
2.利用Blend创建一个简单的动画
> 1>首先把Blend的工作区选为“动画”, 切换快捷键为F6,打开方式“窗口/工作区/动画”。 如下图:
> [![2](https://box.kancloud.cn/2016-02-02_56b00159d28ba.gif "2")](http://hi.csdn.net/attachment/201006/22/1278723_1277187308MffY.png)
> 2>在“工具”中选择“椭圆形”, 或者在“资产”中点击左边的”控件“后选择”椭圆形“。如下图:
> [![3](https://box.kancloud.cn/2016-02-02_56b00159e73ec.gif "3")](http://hi.csdn.net/attachment/201006/22/1278723_1277187309D4Vd.png)
> 3>向美工板拖入2个椭圆形,将其中一个椭圆的填充为红色。如下图:
> ![4](https://box.kancloud.cn/2016-02-02_56b0015a020e5.gif "4")
> 4>选择空白的椭圆, 然后右击, 选择”路径/转换为运动路径“。如下图:
> [![5](https://box.kancloud.cn/2016-02-02_56b0015a11272.gif "5")](http://hi.csdn.net/attachment/201006/22/1278723_1277187311bbbZ.png)
> 5>这时Blend弹出”转换为运动路径“对话框,选择红色的椭圆, 点击确定。Blend就会为我们生成一个情景提要Storyboard1. 点击”play”可以立即看到动画效果。 如下图:
> [![6](https://box.kancloud.cn/2016-02-02_56b0015a2289c.gif "6")](http://hi.csdn.net/attachment/201006/22/1278723_1277187316JtGX.png)
> 6>关闭Storyboard1情节提要,如下图:
> [![7](https://box.kancloud.cn/2016-02-02_56b0015a3e65a.gif "7")](http://hi.csdn.net/attachment/201006/22/1278723_127718731872Z1.png)
> 7>在“资产”中点击“行为”, 选择“ControlStoryborardAction”, 拖动到“对象和时间线”中红色椭圆的节点下。 如下图:
> [![8](https://box.kancloud.cn/2016-02-02_56b0015a4da15.gif "8")](http://hi.csdn.net/attachment/201006/22/0_1277189925h81Q.gif)
> 8>点击添加的行为“ControlStoryboardAciton”, 选择“属性”, 如下图:
> [![9](https://box.kancloud.cn/2016-02-02_56b0015a5d268.gif "9")](http://hi.csdn.net/attachment/201006/22/1278723_1277187320uffL.png)
> 9>SourceName为事件的触发对象, 此演示中即为红色椭圆;EventName为触发事件的名称,此演示中为单击鼠标左键;ControlStoryboardOption为情节提要的控制,有Play/Stop等等, 此演示中为Play;Storyboard为要控制的storyboard, 此演示中选择为我们刚刚创建好的Storyboard1. 总的来说就是单击红色椭圆,开始播放情节提要Storyboard1,也就是让红色椭圆开始转动。
> 10>F5运行,单击红色椭圆就可以看到大家想要的效果了。 如下图:
> [![10](https://box.kancloud.cn/2016-02-02_56b0015a6e3ed.gif "10")](http://hi.csdn.net/attachment/201006/22/1278723_12771873220Lll.png)
> (p.s.大家肯定发现程序一启动,动画就开始播放了, 原因是刚刚Blend为我们创建Storyboard1时,也在MainWindow.xaml创建了触发事件, 可以删掉此代码, 如下:
~~~
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
</EventTrigger>
</Window.Triggers>
~~~
[](http://11011.net/software/vspaste)
OK,通过此次演示, 相信大家都会了如何在Blend中用ControlStoryboardAction控制storyboard。
参考文献:[Control Storyboards Easily using Behaviors](http://blogs.msdn.com/b/expression/archive/2010/05/25/control-storyboards-easily-using-behaviors.aspx)
工程Demo:[SourceCode](http://d.download.csdn.net/down/2475753/muzizongheng)
- 前言
- win32与WPF的混合编程
- WPF: 一个可以用StoryBoard动态改变Grid行宽/列高的类
- MFC中调用WPF教程
- Expression Blend操作: 使用behavior来控制Storyboard
- WPF DatePicker 的textbox的焦点
- WPF 使用MultiBinding ,TwoWay ,ValidationRule ,需要注意的事项
- WPF TreeView 后台C#选中指定的Item, 需要遍历
- WPF GridViewColumn Sort DataTemplate
- DataGridColum的bug
- WPF Get Multibinding Expression, Update Source,
- WPF 后台触发 Validate UI‘s Element
- WPF ValidationRule 触发ErrorTemplate 的注意事项
- WPF DelegateCommand CanExecute
- WPF TextBox PreviewTextInput handle IME (chinese)
- No overload for &#39;OnStartup&#39; matches delegate &#39;System.Windows.StartupEventHandler&#39;
- WPF error: does not contain a static &#39;Main&#39; method suitable for an entry point
- WPF GridView中的CellTemplate失效的原因
- DataGrid 显示选中的item
- 如何得到WPF中控件绑定的EventTrigger
- 选中DataGrid的Cell而不是row
- ContextMenu的自定义
- 输入框只能输入英文
- TextBox的OnTextboxChanged事件里对Text重新赋值带中文, 导致崩溃
- DataGrid当列宽超出当前宽度时,没有数据也恒有滚动条
- wpf如何获取control template里的元素
- Set connectionId threw an exception.
- WPF中Visible设为Collapse时,VisualTreeHelper.GetChildrenCount为0
- XAML 编码规范 (思考)
- 如何为现有控件的DependencyProperty添加Value Changed事件?
- TreeView滚动TreeViewItem
- 为BindingList添加Sort
- WPF Background的设置有坑
- 自定义Panel中添加依赖属性需要注意的问题
- TextBlock截断字符显示为....
- DataGrid 支持字符截断显示
- TreeView控件实践
- WPF如何更改系统控件的默认高亮颜色 (Highlight brush)
- ViewModel中C# Property自动添加OnPropertyChanged处理的小工具, 以及相应Python知识点
- WPF中Xaml编译正常而Designer Time时出错的解决办法
- 关于Snoop的用法
- wpf中为DataGrid添加checkbox支持多选全选
- WPF中DataGrid控件的过滤(Filter)性能分析及优化
- wpf控件提示Value ‘’ can not convert
- DropShadowEffect导致下拉框控件抖动
- 再论WPF中的UseLayoutRounding和SnapsToDevicePixels
- WPF案例:如何设计历史记录查看UI
- WPF案例:如何设计搜索框(自定义控件的原则和方法)
- WPF基本概念入门
- WPF开发中Designer和码农之间的合作
- 聊聊WPF中的Dispatcher
- 聊聊WPF中字体的设置
- Bug:DataGridCell的显示不完整
- WPF中ToolTip的自定义
- WPF中ItemsControl绑定到Google ProtocolBuffer的结构体时的性能问题
- TreeView的性能问题
- Xaml中string(字符串)常量的定义以及空格的处理
- 依赖属性
- WPF中的CheckBox的_ (underscore / 下划线)丢失
- WPF错误:必须使“Property”具有非 null 值。
- WPF中ItemsControl应用虚拟化时找到子元素的方法
- WPF毫秒级桌面时钟的实现-C#中Hook(钩子)的应用
- KB2464222导致IsNonIdempotentProperty方法找不见
- WPF中PreviewMouseDownEvent的系统处理:TabItem的PreviewMouseDown 事件弹框后不切换的问题调查
- WPF文字渲染相关的问题及解决
- wpf中的默认右键菜单中的复制、粘贴、剪贴等没有本地化的解决方案
- WPF内部DeliverEvent读锁和PrivateAddListener写锁导致死锁
- Windbg调试WPF的依赖属性
- WPF 后台Render线程崩溃, Exception from HRESULT: 0x88980406
- WPF中DependencyObject与DependencyProperty的源码简单剖析
- 禁用WPF中DataGrid默认的鼠标左键拖动多选行的效果
- wpf工程中在Xaml文件下添加多个cs文件
- ScrollViewer滚动到底来触发加载数据的Behavior