在Blend强大的设计@L_
607_0@
支持下,设计人员和开发人员可以无
代码实现Silverlight/WPF动画
效果,例如上文介绍的StoryBoard,就是
一个典型例子,设计人员和开发人员仅需提供必要元素,即可实现简单动画。通常来说,在
一个项目中会经常出现重复的动画或者相似的动画,如果每次都创建
一个新的StoryBoard,这样显着项目
代码十分臃肿,而且有时还会影响项目运行效率。另外在多个
项目中都会用到
一个相同的动画
效果,如果能把这个动画
效果编译成通用类提供
调用,也就可以达到事半功倍的
效果。为了
解决以上问题,微软在Silverlight 3中推出
一个新的特性,叫做Behavior,也称为行为。本文带着大家
快速学习掌握Behavior在Blend中的使用。
在
开始学习前,首先需要了解一下Behaviors(行为)的几个关键点:
(1)Behaviors(行为)是可复用
代码集合,可以被任何对象附加使用;
(2)设计人员和开发人员可以使用Behaviors(行为)在不用设计任何
代码的情况下,
添加相关@L_
607_0@到XAML中;
(3)Behaviors(行为)可以通过XAML附加到任何对象元素中,无需设计任何
后台代码;
(4)
一个Behaviors(行为)可以被多个对象同时
调用;
Behaviors(行为),我们可以简单的理解为
用户交互通用类,或者
一个Usercontrol,
使用“行为”主要是为了简化设计人员和开发人员的工作,提供一种可重复使用的
用户交互
代码。创建成功后,一旦发布,即可在Blend中使用拖拽操作将该行为应用到不同
项目中。记得曾经有网友问过,Behavior(行为)从哪里声明
调用?其命名空间在哪里? 前文我们提及过,Behaviors(行为)是Silverlight 3的新@L_
607_0@,是为了提供可复用
用户界面
代码,而这些
代码的
调用被集成到Expression Blend视图设计中,也就是说Blend是当前最简单
调用Behaviors(行为)的设计工具,于是微软将Behaviors(行为)类库封装到Expression Blend 3中和Expression Blend 3 SDK中,安装以上工具成功后,就
可以获得Behaviors(行为)
支持。在Blend 3安装成功后,可以在c:\Programe Files\Microsoft SDKs\Expression\Blend 3\Interactivity\Libraries\Silverlight中发现两个DLL
文件,分别是:
System.Windows.Interactivity.dll,该
链接库定义了Behaviors(行为)基础类,有了该
链接库
支持,即可
支持Behaviors(行为);
@H_2_44
@microsoft.Expression.Interaction
s.dll,该
链接库提供了一些扩展行为类库,以及一些Action和
trigger类,作为演示实例;
Behaviors(行为)的构成
Behaviors(行为)是由三个基础类构成的,
trigger(触发器),Action(行动)和Behavior(行为),被统称Behaviors(行为)。在Silverlight项目设计中,暂时没有工具
支持视图设计
trigger(触发器)和Action(行动),所以,设计和使用这两个类,只能手动输入
代码。从上图
可以看出trigger(触发器)和Action(行动)的使用,通常来说当
用户进行相关操作的时候,会
调用对应Action,这时触发器会被激活。由于本系列主要介绍Blend的相关应用,这里对于
trigger(触发器)和Action(行动)的
代码设计不再进行详细说明。
Behaviors(行为)在Blend中的使用
我将以上文StoryBoard动画例程为基础,对Behavior
调用进行演示。
首先打开StoryBoardDemo项目,
在左边项目栏中,选择"Assets“选项,如果没有该选项,可以到
菜单"Window“中,选择
显示"Assets”,这时会在Assets中列出,项目,控件,样式,行为等选项;
选中“Behaviors”,会看到一些现成的Behavior类库,当把鼠标放在类库名上,会弹出
提示框,说明该Behaviors(行为)的@L_
607_0@。这里仅列出了八个Behaviors(行为),在Expression官方网站还有更多免费的Behavior(行为)大家可以自行下载使用。点击图中“Expression Gallery”或者
访问这里。
ChangePropertyAction,该Behaviors属于
@H_2_44
@microsoft.Expression.Interaction
s.dll中的Action类,利用反射改变
属性值;
GoToStateAction,该Behaviors属于
@H_2_44
@microsoft.Expression.Interaction
s.dll中的Action类,将
一个控件转换到指定Visual State;
HyperlinkAction,该Behaviors属于
@H_2_44
@microsoft.Expression.Interaction
s.dll中的Action类,导航切换到
指定页面链接;
RemoveElementAction,该Behaviors属于
@H_2_44
@microsoft.Expression.Interaction
s.dll中的Action类,从UI界面移除
一个控件;
PlaySoundAction,该Behaviors属于
@H_2_44
@microsoft.Expression.Interaction
s.dll中的Action类,播放音乐;
ControlStoryBoardAction,该Behaviors属于
@H_2_44
@microsoft.Expression.Interaction
s.dll中的Action类,控制动画开始,停止,暂停,恢复等;
MouseDragElementBehavior,该Behaviors属于
@H_2_44
@microsoft.Expression.Interaction
s.dll中的Behavior类,允许
用户在
页面内拖拽控件;
FluidMoveBehavior,该Behaviors属于
@H_2_44
@microsoft.Expression.Interaction
s.dll中的Behavior类,使用平滑的动画
效果显示指定控件随着布局的改变而改变;
我们选中任意一项进行演示,例如PlaySoundAction,
从左边Assets
菜单中,选中“PlaySoundAction”,将其拖拽到播放音乐按钮上,
随后,查看“ob
ject and Timeline”窗口,在button控件下,会
显示一个“PlaySoundAction”选项,
选中“PlaySoundAction”选项后,看右边Properties
属性框,会
显示激活的
trigger”触发器和“Common Properties”
属性
trigger选项中,
sourcename是指激活该行为的控件
名称,因为我们前面将行为拖拽到按钮button上,所以这里控件名为button,EventName是激活行为的事件,
默认的按钮事件为Click点击事件。
也可以根据控件的不同,选择以上不同的事件进行行为激活。
在通用
属性中,
source是这要播放的音乐路径,Volume是指音量。这里没有特殊的解释。而最后IsEnabled,是指该行为是否可用,
默认为可用状态。
这样,我们可以F5编译,运行后,点击“播放音乐”按钮,即可听到设置的音乐。
Behaviors(行为)
快速入门,暂时写到这里。大家可以尝试根据以上步骤使用不同Behaviors,在以后的
文章高级系列中,将介绍
如何创建自定义Behaviors(行为)。
欢迎各位加入专注Silverlight技术QQ群:
超级群37891947,22308706,100844510 一起讨论学习Silverlight技术。