




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Blend 3入门之深入Behavior学WPF 的一定知道,触发器是非常强大。这是一种对象,该对象侦听特定条件(例如事件触发或属性设置为某个值),并调用一项或多项关联的操作作为响应。行为就是一 组对象,在没有来自触发器或类似触发器的项目的外部通知的情况下也可以执行用户定义的动作。尽管需要满足某种条件,但它不必由触发器调用。一、了解Behavior 1 .Blend中包含三种基本的行为: a) Behavior -将状态信息和零个或更多个 ICommand 封装到一个可附加的对象中,提供对象绑定和撤销绑定的事件,适应大多数情况。 b) TriggerAction -代表封装功能单元的可附加对象。 c) TargetTriggerAction -代表一项操作,可以将该操作确定为目标以影响不同于其 AssociatedObject 的对象,提供了更高层次的抽象设计,AssociatedObject 就 是被绑定的上层对象。 2.使用行为的泛型,如 Behavior,TriggerAction,TargetTriggerAction 因为这是基础结构类。操作设计者应从 泛型 而不是从此类中派生 。可以看下面的结构图 二、在Blend 3.0中应用Behavior1. 新建项目2. 拖动一个圆形控件到白板找到Behavior组件,这里我们选择MouseDragElementBehavior(可拖动行为)。将其拖动到白板上的圆形控件上,或者是Objects And Timeline 面板上的Ellipse对象上,我们得到如下图。Ok,我们为圆形添加了一个可拖动的行为,即现在圆形在运行后就可以自由拖动了,可以运行下看看.很简洁,很方便,很强大,Allways , No Code。3. 再进一步,我们为原型添加MouseEnter的VisualState,其实就是鼠标移入的一种样式改变。 注意按右边加号添加VisualState,并改名。当此VisualState前有个红色圆点,表示现在已经开始记录状态,你可以修改Ellipse控件的外观了,结束了按下上面的Base退出编辑。选择GoToStateAction 行为,并将其拖到Ellcipse上面。 选中GoToStateAction,将属性面板中StateName选择为InCircle状态,EventName设置为MouseEnter。Ok,我们已经为圆添加了鼠标移入事件。运行看看吧。4. 当然,鼠标移入之后就一直保持那个状态了,那就再给它加个OutCircle的虚拟状态,自己尝试吧,但现在不要急着将再创建个Behavior,我们留给下面的TiggerAction来完成,以便区别两者的不同。 三、在Blend 3 中应用TiggerAction1. 在上面项目基础上我们新建项,File New Item,取名为OutStateAction.cs 按下Shift+Ctrl+B给整个项目编译一下。这是我们再到Assets面板的Behavior中就会发现我们刚才创建的动作,将它拖到我们的圆上。 修改行为组件的属性,这里我们要让对象MouseLeave事件触发时执行指定的动作,然而这个动作在哪实现呢?2. 打开OutStateAction.cs,我们发现里面有注释提示你,Invoke函数就是你想要实现的动作,Ok,加入你的代码吧。这里我们想让圆的颜色变为蓝色,那么如何获取这个被附加的上层对象呢,前面已经介绍过,TriggerAction中的AssociatedObject 属性就是被绑定的上层对象的引用。有了这个引用,我们可以做很多事情了,在Invoke函数中插入下面的代码 var ellipse = this.AssociatedObject as Ellipse; ellipse.Fill = new SolidColorBrush(Colors.Red);3. 好了,现在可以运行下看下效果(这里在程序中改变Fill的颜色后再使用VisualState好像就失效了,估计应该是覆盖了吧,有大侠指点下:-) 三、Blend 3 中应用TargetTriggerAction默认情况下,尽管你可以更改操作所影响的对象,但操作只能访问它所附加到的元素(父元素),即 AssociatedObject 属性。为了消除这种上下级的依赖,实现松散耦合的操作,由用户自定义操作的目标,我们就从 TargetedTriggerAction(而不是 TriggerAction)中扩展表示操作的类。1. 在上面基础上,我们新建一个类。并让它继承自TargetedTriggerAction2. TargetedTriggerAction 依然有一个Invoke函数需要你重写,但是这次你要针对的对象是由程序在运行时提供,该类本身并不了解具体的Target Object是什么,触发器是什么。但它提供了一个访问这个抽象Target的引用。我们先在InVoke中添加如下简单的事件protected override void Invoke(object o) MessageBox.Show(Hello world);不管外界是何触发器,一旦满足了触发条件,程序就会执行Invoke,并将获取当前Target的引用3. Shift + Ctrl +B 编译后,可以看到我们的ObjectTriggerAction行为组件,把它拖到圆上看到TargetName已经设为ellipse了,当然,我们可以改成其他对象为目标修改EventName 为MouseLeftButtonUp,当鼠标按下松开后,我们的程序就会自动将Target对象输送给Action了,设计得很完美。4. 运行一下看到是否拖动完后会弹出个对话框呢,那就OK了。 其实Behavior的功能远比我谈到的这些要强大,只是这里结合Blend 3的基本操作界面而谈,所以不讨论那些理论性的东西,想深入研究的请关注Blend 3 SDK 官方手册。还 有一点要注意,Behavior的所有功能组件都在System.windows.Interactivity.DLL中,而这个只是Blend 3 SDK 中自带的,并不包含在Si
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 移动应用内广告位布局创新创业项目商业计划书
- 虚拟现实全球文化交流平台创新创业项目商业计划书
- 本地生活优惠信息与团购服务创新创业项目商业计划书
- 输油泵安全消防知识培训课件
- 现场培训消防安全知识内容课件
- 2025年家庭教育指导服务市场用户需求分析与市场拓展策略研究报告
- 2025年新型甜味剂在饮料行业的法规监管与消费者信任度提升策略分析
- 2025年旅游地产项目规划设计中的文化遗产旅游可持续发展路径报告
- 湖北省宜昌市高中教学协作体2026届化学高一上期末调研试题含解析
- 江苏省淮安市清江中学等四校2026届化学高三第一学期期末复习检测模拟试题含解析
- 中医院全国名老中医药专家传承工作室制度
- 中国建设银行专用PPT模板
- 套管预留预埋技术交底
- 部编版五年级上册语文课堂作业本答案
- 全国一等奖 宁夏教研工作平台 宁夏回族自治区教育厅教研室
- YS/T 677-2016锰酸锂
- SB/T 10279-2017熏煮香肠
- 第20章-货币政策与财政政策-(《金融学》课件)
- 神经外科常见疾病的护理课件
- 科技论文写作与文献检索-1课件
- 危重患者抢救制度
评论
0/150
提交评论