OK,說了這麼多,我們還是先來看看該怎麼在開發環境當中使用Behavior技術。當然,就單純的Silverlight開發人員(不管是Designer或是Developer)來說,開發環境安裝好Blend 3是最低的要求,同時當您安裝了Silverlight 3 SDK以及Blend 3 SDK、Silverlight 3 Toolkit等套件之後,您可以直接在Blend 3當中建立一個Silverlight應用程序,接着在場景中佈置一個Button和一個TextBlock,並且隨意設計一個動畫。
接着,請切換到Assets頁標籤,若您有正確的安裝Blend 3 SDK,您會看到Assets頁卷標下有Behaviors選項,在列出的項目中,你會看到有一個ControlStoryboardAction:
請點選它並拖曳到Button上,然後切換到Object and Timeline頁標籤,您會發現Button控件底下多了個ControlStoryboardAction對象:
接着點選該對象,切換到屬性窗口,您接着會發現,可以透過開發環境來設定ControlStoryboardAction對象的屬性(請注意不是Button的屬性,別點錯):
完成之後,請先建置(Build)此應用程序,成功後請接着執行此應用程序,您會發現在不需要寫任何程序代碼的狀況下,當使用者按下Button1(也就是Button1的Click事件觸發後),Storyboard動畫就自動被播放了。
如果您仔細觀察Action的設定窗口,會發現其實場景中任何控件(不只是Button)的任何事件(不只是Click)都可以做爲特定Action的觸發條件。而每一個Actionr都代表着一種行爲,而程序設計人員(developer)可以設計出各式各樣的Action,讓設計師(Designer)直接使用。
那Trigger、Action、Behavior三者之間究竟有何關係呢?
從上面的操作中我們可以知道,Action是經過程序設計師封裝好的某種行爲(功能),我們可以把一些常用的代碼段,例如上面用到的『動畫撥放』、或是先前我們提過的『發一封信』、或『將窗體上的數據存入數據庫』…等『功能』整理成一個個的Action,而開發人員只需要把Action拖曳到特定的對象上即可使用。
當然,拖曳到目標對象上之後,還得要設定這個Action的相關信息,也就是該Action的屬性(如果有的話),以及該Action被觸發的時機,而這就是所謂的Trigger了。
在Silverlight中,預設的Trigger有底下幾種:
1. EventTrigger:最常用的觸發器,可選擇在控件的特定事件發生時觸發,例如Loaded、MouseLeftButtonDown、GotFocus…等。
2. TimerTrigger:可設定每n毫秒觸發一次,總共要觸發幾次或隨時間持續觸發。
3. KeyTrigger:可設定在特定按鍵被按下時觸發,可捕捉到鍵盤上的一般按鍵與功能鍵,亦可抓取Ctrl, Alt等組合控制鍵。
4. StoryboardCompletedTrigger:在特定動畫撥放完畢後觸發。
請注意,這些Trigger是配合着Action使用的,你會發現,每一個Action都可以透過Blend設定Trigger,並透過Trigger來觸發執行此Action,如此一來,我們就可以相當靈活的在場景中特定控件的特定事件發生時,來執行特定工作。
也就是說,在這個機制下,只要程序設計師預先寫好Trigger與Action,Designer就可以在完全不撰寫任何程序代碼的狀況下,來開發出一個Silverlight應用系統或網站。
我們剛纔提到了Action與Trigger,那Behavior呢?難道Behavior不需要Trigger嗎?其實不是的,應該說,Behavior是內建(包含)了Trigger!!!
你會發現當場景中的某一個對象被套用了Behavior之後,不需要設定任何Trigger,該對象就會自動擁有某種功能,就好像我們剛纔介紹了的MouseDragElementBehavior一樣,當該Behavior套用在某個對象上,該對象就直接支持拖曳行爲了,因此,你可以將Behavior直接想象成Trigeer與Action的結合。
我們先談到這邊,下一篇則要來介紹Action的開發方式...