在開發中善用自定義的Behaviors

前言:


      以前寫了一篇文章是關於 經過blend快速建立具體物理特性的遊戲,其實,它只是引入了一個物理引擎,而咱們在blend進行使用的過程當中,咱們發現,只是簡單的拖拽一些Behaviors屬性,就達到了使人意想不到的效果,這使得做爲開發和設計人員,只是簡單的拖拽操做,即可以完成大量重複的工做,因此在開發過程當中,咱們得好好利用Behavior這個屬性。經過它,來創造咱們本身的Behavior以達到複用的目的,本篇將介紹Behavior屬性並經過一個簡單的示例向你們展現如何自定義本身的Behavior。

關於 Behaviors

      
一個Behavior(中文通常翻譯爲行爲),一般能夠附加給界面元素特有的性質,這些性質包括:元素呈現的效果,元素和用戶交互的效果。首先咱們來看一個簡單的示例,來看看它是若是使用的:

首先打開Blend工具,建立一個Silverlight項目


接下來,咱們在畫布上畫一個圓:


而後,咱們打開Assets面板,選擇Behaviors項(行爲),給上面畫的圓賦予一個Behavior屬性:



運過項目,就能夠發現,此時的圓能夠用鼠標拖動了,由於,咱們給它賦予了MouseDragElementBehavior。

做爲開發人員,咱們天生就有看到實現過程的天性,因而,咱們查看下代碼:


咱們發現,在xaml文件中,增長了兩個命名空間的引用,另外就是一個Behaviors屬性的定義,已經在上圖中標識出。
因而,咱們就想對這些東西探個究竟,拿出Reflector準備(這麼好的東西居然要收費了,我才用沒幾個月呢T T)。不過在查看以前,咱們仍是先來熟悉下幾個相關的命名空間:
Microsoft.Expression.Interactions命名空間下主要存放了Behavours, triggers 和 actions相關的東西。與之相關的文件默認在 C:\Program Files\Microsoft SDKs\Expression\YourBlendVersion\Silverlight\v4 .0\Libraries文件夾下,這裏以blend4爲例,其它版本可能略有不一樣。在這個文件夾下,咱們能夠找到Microsoft.Expression.Interactions.dll文件。找到了,咱們就reflect下它,因而咱們便能找到以下所示:



咱們能夠很清楚的看到MouseDragElementBehaviour繼承了位於 System.Windows.Interactivity命名空間下的抽象類 Behavior<T>。關於對behaviors屬性的探索先到這裏,若是你有興趣的能夠本身深刻理解。接下來,咱們經過一個簡單的示例來建立本身的Behavior。


建立自定義Behavior

      這裏的工做繼續在Blend中進行,打開你剛纔的項目,鼠標右擊項目,而後依次選擇:添加新項-->選擇行爲--->命名行爲的名稱--->肯定



這裏咱們命名爲MyBehavior,因而咱們在目錄結構中就能看到新增長了一個類文件:



打開這個文件,咱們能夠看到咱們自定義的類繼承了Behavior<DependencyObject>
這個類包括一個構造函數,和兩個重載函數:


     看註釋,咱們就知道,咱們須要在OnAttached()函數加入些東西,這樣能夠將效果附加到對象上去。這裏,咱們想實現一個效果,當鼠標移動到對象上面的時候,對象放大。因而,咱們在OnAttached函數中增長下圖所示的代碼。其中的AssociatedObject屬性提了當前對象的上下文,以使得咱們的Behavior添加到目標對象上去。後面,咱們增長了鼠標移入和移出事件,當鼠標移入時,咱們改變對象的大小,鼠標移出的時候,咱們恢復大小。這樣一個簡單自定義Behavior就作好了。



當作好這寫以後,你生成下當前的項目,而後打開資產面板下的行爲項,即可以看到咱們自定義的Behavior了:

而後,咱們拖拽它到咱們剛纔那個圓上面,運行項目,就能夠看到效果了,當咱們的鼠標移到圓上的時候,變大,移出的時候恢復。這樣你在之後的開發中,若是想放大其它的界面元素,例如圖片什麼的,也只是簡單的拖拽工做,固然,實際開發中咱們不會這麼簡單,能夠建立更復雜的行爲。這裏只是簡單的示例而已,但願對你們有幫助:)

相關文章
相關標籤/搜索