在开发中善用自定义的Behaviors

前言:


      以前写了一篇文章是关于 经过blend快速建立具体物理特性的游戏,其实,它只是引入了一个物理引擎,而咱们在blend进行使用的过程当中,咱们发现,只是简单的拖拽一些Behaviors属性,就达到了使人意想不到的效果,这使得做为开发和设计人员,只是简单的拖拽操做,即可以完成大量重复的工做,因此在开发过程当中,咱们得好好利用Behavior这个属性。经过它,来创造咱们本身的Behavior以达到复用的目的,本篇将介绍Behavior属性并经过一个简单的示例向你们展现如何自定义本身的Behavior。

关于 Behaviors

      
一个Behavior(中文通常翻译为行为),一般能够附加给界面元素特有的性质,这些性质包括:元素呈现的效果,元素和用户交互的效果。首先咱们来看一个简单的示例,来看看它是若是使用的:

首先打开Blend工具,建立一个Silverlight项目


接下来,咱们在画布上画一个圆:


而后,咱们打开Assets面板,选择Behaviors项(行为),给上面画的圆赋予一个Behavior属性:



运过项目,就能够发现,此时的圆能够用鼠标拖动了,由于,咱们给它赋予了MouseDragElementBehavior。

做为开发人员,咱们天生就有看到实现过程的天性,因而,咱们查看下代码:


咱们发现,在xaml文件中,增长了两个命名空间的引用,另外就是一个Behaviors属性的定义,已经在上图中标识出。
因而,咱们就想对这些东西探个究竟,拿出Reflector准备(这么好的东西居然要收费了,我才用没几个月呢T T)。不过在查看以前,咱们仍是先来熟悉下几个相关的命名空间:
Microsoft.Expression.Interactions命名空间下主要存放了Behavours, triggers 和 actions相关的东西。与之相关的文件默认在 C:\Program Files\Microsoft SDKs\Expression\YourBlendVersion\Silverlight\v4 .0\Libraries文件夹下,这里以blend4为例,其它版本可能略有不一样。在这个文件夹下,咱们能够找到Microsoft.Expression.Interactions.dll文件。找到了,咱们就reflect下它,因而咱们便能找到以下所示:



咱们能够很清楚的看到MouseDragElementBehaviour继承了位于 System.Windows.Interactivity命名空间下的抽象类 Behavior<T>。关于对behaviors属性的探索先到这里,若是你有兴趣的能够本身深刻理解。接下来,咱们经过一个简单的示例来建立本身的Behavior。


建立自定义Behavior

      这里的工做继续在Blend中进行,打开你刚才的项目,鼠标右击项目,而后依次选择:添加新项-->选择行为--->命名行为的名称--->肯定



这里咱们命名为MyBehavior,因而咱们在目录结构中就能看到新增长了一个类文件:



打开这个文件,咱们能够看到咱们自定义的类继承了Behavior<DependencyObject>
这个类包括一个构造函数,和两个重载函数:


     看注释,咱们就知道,咱们须要在OnAttached()函数加入些东西,这样能够将效果附加到对象上去。这里,咱们想实现一个效果,当鼠标移动到对象上面的时候,对象放大。因而,咱们在OnAttached函数中增长下图所示的代码。其中的AssociatedObject属性提了当前对象的上下文,以使得咱们的Behavior添加到目标对象上去。后面,咱们增长了鼠标移入和移出事件,当鼠标移入时,咱们改变对象的大小,鼠标移出的时候,咱们恢复大小。这样一个简单自定义Behavior就作好了。



当作好这写以后,你生成下当前的项目,而后打开资产面板下的行为项,即可以看到咱们自定义的Behavior了:

而后,咱们拖拽它到咱们刚才那个圆上面,运行项目,就能够看到效果了,当咱们的鼠标移到圆上的时候,变大,移出的时候恢复。这样你在之后的开发中,若是想放大其它的界面元素,例如图片什么的,也只是简单的拖拽工做,固然,实际开发中咱们不会这么简单,能够建立更复杂的行为。这里只是简单的示例而已,但愿对你们有帮助:)

相关文章
相关标签/搜索