WPF系列介紹-依賴屬性系統 【01】

        WPF是微軟新一代的界面系統,運行於.NET框架之下,由於其發佈環境的限制,在快速迭代的互聯網時代產品中幾乎看不到其身影,但是其採用的思想還是值得學習和借鑑的,其實,也有不少企業級的產品使用其開發,WPF是一套優秀的界面開發引擎,個人覺得它核心東西在於其依賴屬性系統和數據綁定功能,正是因爲這兩套機制的實現,WPF才使傳統的數據流反轉,真正實現了業務邏輯和界面的分離(現在很多傳統的DUI庫還是界面驅動數據,比較傳統),使得業務的開發簡單、高效,使開發者更專注自己的業務邏輯,界面的事情都交給WPF。

        下面,我們具體瞭解下WPF的依賴屬性系統,之所以先開始介紹它,是因爲諸如動畫系統、數據綁定都得依賴於屬性系統才能運轉。

         首先,我們來認識下什麼是依賴屬性?依賴屬性有些什麼好處?

          既然也叫做屬性(Property),那麼也和一般的crt屬性類似,通過類我們可以設置和訪問那些類具有訪問權限的依賴屬性,但是之所以又叫依賴屬性,那麼肯定和一般的類(crt屬性)屬性是有區別的,從其命名,關鍵在依賴,那麼我們可以理解它屬於類但又不屬於類,感覺這樣說起來有點費解,我們這裏定義兩個概念,類對象和實例對象(類對象代表類整個範疇,而實例對象是類的某個實例化的對象,典型就是new出來的,具體細節可以百度),那麼我們可以這樣理解依賴屬性:註冊後的屬性屬於類對象(可能會屬於多中類對象,後面會詳細介紹附加屬性);通過類方法設置的特定依賴屬性值就屬於實例對象(實例對同一個依賴屬性至少有兩個屬性值);那麼,這樣做有什麼好處呢?

         WPF大費周章地引入依賴屬性,有什麼好處呢?

 

  • 節約內存空間。相同類對象只有一份依賴數性值的拷貝(不管有多少實例對象),而這在WPF叫默認值。
  • 新功能的引入。通過依賴屬性的優先級控制,可以實現屬性值的校驗、動畫機制、數據綁定等效果(這樣不會損壞原始的依賴屬性值,WPF裏叫做基值BaseValue)。
  • 附加屬性控制。通過附加依賴屬性,我們可以把不相干的多個對象聯繫起來。         

        下面詳細介紹依賴屬性的構成、原理和使用:

 

         優先級

 

         

        上圖顯示了依賴屬性的訪問優先級,從上圖知道,優先級最高的是動畫、其次爲表達式(綁定)、然後是本地值,優先級最低的就是默認值(依賴屬性註冊時設定的默認值);上面的動畫和綁定值,其實都是通過表達式計算產生的中間值,考慮這個不算,其實優先級最高就是本地值了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章