Prism V2之旅(4)2011-12-13 博客园 Clingingboy这篇向大家介绍一个在wpf中非常实用的功能Attach Behavior.我们称之为附加行为.附加行为在Web领域的流行如果你知道asp.net ajax框架就一定会知道AJAX Control Toolkit.虽然里面的很多功能华而不实,但这种实现方式确实非常值得学习.你可以再次打开其展示的网站回顾一下其用法,如下面代码的方式
<asp:TextBox ID="TextBox1" runat="server" /><sample:FocusBehavior runat="server"ID="FocusBehavior1"HighlightCssClass="MyHighLight"NoHighlightCssClass="MyLowLight"TargetControlID="TextBox1" />
在这里发几句牢骚,ajaxControlToolKit一个简单的功能,需要依赖于多个基类,光谈设计没问题, 但必须考虑到,我们是在做web,尽量不要加载不必要的脚本文件,在你使用其提供的日历扩展时,你就会发展其脚本无比大.而且功能不易扩展.我曾经看过一些商业控件,也是基于asp.net ajax的.因为面向对象的设计,一个控件的脚本能加载到300k左右.这不知道该怪控件开发者还是框架设计者呢?我想还是因为web的特性关系,让我们放不开手脚在javascript上做面向对象,做到适用即可.如果你用过jQuery的话,那么它的小巧和易扩展性你是绝对可以感受到的,你是否有曾经一段时间在网上疯狂的找jQuery插件的经历呢?jQuery插件其实就等同于asp.net ajax的行为扩展(Behavior),两个框架的扩展行为数量并不是一个数量级的.所以jQuery对于大多数人来讲是非常好的选择.附加行为在wpf的使用行为是一个组件,它扩展与其关联的 DOM 元素的功能。这是asp.net ajax框架的行为的一种解释.那么套用在wpf上,则是行为是一个组件,它扩展与其关联的元素(也可称控件)的功能附加行为是一种模式,与附加属性不同,但它的实现方式可以借助附加属性的方式.如下示例
<fxui:TextBox x:Name="searchTextBox" Margin="2" Grid.Column="1"> <fxui:Interaction.Behaviors>  <fxui:AutoCommit ButtonName="searchButton" /> </fxui:Interaction.Behaviors></fxui:TextBox>