這篇向大家介紹一個在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>