隨著Silverlight 3.0版的問世,Action、Behavior和Trigger這三個方便的類別和相關的衍生類別也跟著亮相,做為程式設計師和介面工程師更緊密而且無痛合作的超強大類別庫之一(好吧,其實有三個),而這三個類別衍生出來的類別,我們統稱之為Behaviors。
隨著Silverlight 3.0版的問世,Action、Behavior和Trigger這三個方便的類別和相關的衍生類別也跟著亮相,做為程式設計師和介面工程師更緊密而且無痛合作的超強大類別庫之一(好吧,其實有三個),而這三個類別衍生出來的類別,我們統稱之為Behaviors。
有用過Blend的朋友們應該早就享受過這三個便利的類別衍生出來的功能(什麼!?你還沒用過??快看看Blend中內建的Behaviors庫吧!!)
*Assets頁籤中的Behaviors項目可以看到專案中能使用的Action和Behavior元件
為什麼會說這三個類別是「可以讓程式設計師和介面工程師更緊密而且無痛的合作的超強大類別」呢?因為它們的使用方法和寫作原理跟我們習慣的其他類別不太一樣,這三種類別,是可以被工程師先行開發出來,再經由設計師透過BLEND,以類似「植入」的方式,「附身」到各種工程師預先定義好的使用者控制項裡面。而且一旦控制項被這三種類別之一附身了,控制項就會針對該類別所定義的事件做出對應的反應,例如在上圖看到的MouseDragElementBehavior元件,只要將它加入Rectangle控制項中,該Rectangle就會具備有能透過滑鼠拖放改變位置的能力,對設計師來說,是一行程式都不用寫的(實例請參訪小猴子點部落),很方便吧!!
而Action、Behavior和Trigger三種類別,分別有什麼不同之處呢?簡單的來為各位做個說明:
首先要介紹的是Trigger,Trigger跟Action可以說是哥倆好寶一對,通常都會形影不離的出現,因為Trigger可以負責監控某些條件的變化,當指定的條件發生了,它就會去啟動一個Action來執行某個動作,例如說,當某個CheckBox的IsChecked值改變為False時,觸發一個將畫面上的某個Button隱藏起來的Action。
而Action,就如介紹Trigger時提到的,它最主要的功能就是去執行某個動作,例如改變某個物件的屬性(Property)、執行某個方法(Method)、設定目前的焦點(Focus)、開啟某個超連…結等等,通常也是都搭配Trigger一起狼狽為奸合作無間。
不過,Trigger和Action除了一起搭擋之外,它們也是可以獨立運作的,而且透過不同的Trigger和Action的組合,就可以激盪出更多不同的火花。
最後要介紹的Behavior,它就比較特別一點了,它可以自己當獨行俠,一個人當兩個人用,Behavior看起來比較像是Action,因為它可以用來執行動作,但是它又可以身負Trigger的功能,當特定的事件被觸發或是需要符合某些特定邏輯的情形下再執行某動作的話,就可以透過Behavior來完成,就如同我們前面提到的MouseDragElementBehavior,它一個人就負責了監控滑鼠拖拉的事件和邏輯,也同時執行移動物件的位置這個工作。
看到這邊,工程師們應該會問:如果我Blend苦手或是我根本沒安裝Blend,可是我還是想使用Behaviors怎麼辦呢?很簡單,只要安裝Blend 4 SDK就行了(有分Silverlight版和WPF版,若有安裝Blend的話預設就會裝好兩個),它是免費而且不需要安裝Blend就可以直接使用的類別庫,安裝完成之後,只要在專案中引用Microsoft.Expression.Interactions 和 System.Windows.Interactivity兩個類別庫(Silverlight專案預設路徑為C:\Program Files\Microsoft SDKs\Expression\Blend\Silverlight\v4.0\Libraries\,WPF則為C:\Program Files\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0\Libraries\),並且在XAML中加入如下:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
這兩段引用,就可以開心的在XAML中使用內建的各種Behaviors了!!
而除了Blend內建提供的各種Behaviors之外,在Expression Gallery中也提供了為數不少的Behaviors可以下載使用,都是由其他善心人士自行上傳的,三不五時去看看,說不定會有意想不到的收穫喔!!當然,如果你也想當善心人士,也可以將自己開發的Action、Behavior或是Trigger上傳 ,造福大眾喔!!
相信介紹到這邊,大家都有點按奈不住,想自己開發自己的行為庫了吧!?之後我會來為大家一一示範該怎麼開發這三種類別喔!!我們下次見!!