天天看點

第4章 依賴屬性(1)——概述

一、概述

WPF使用更進階的依賴屬性代替原來的.NET屬性。依賴屬性使用效率更高的儲存機制,并支援附加功能,如更改通知以及屬性值繼承(在元素樹中向下傳播預設屬性值的能力)。同時依賴屬性也是WPF許多功能的基礎,包括動畫、資料綁定以及樣式。

WPF元素提供的大多數屬性都是依賴屬性。因為這些依賴屬性都使用普通的.NET屬性進行了封裝,是以使用和普通的.NET屬性沒有任何差別。

二、何時應定義依賴屬性

将所有的屬性都設定為依賴屬性并不總是正确的解決方案,具體取決于其應用場景。有時,使用私有字段實作屬性的典型方法便能滿足要求。MSDN中給出了下面幾種應用依賴屬性的場景:

1. 希望可在樣式中設定屬性。

2. 希望屬性支援資料綁定。

3. 希望可使用動态資源引用設定屬性。

4. 希望從元素樹中的父元素自動繼承屬性值。

5. 希望屬性可進行動畫處理。

6. 希望屬性系統在屬性系統、環境或使用者執行的操作或者讀取并使用樣式更改了屬性以前的值時報告。

7. 希望使用已建立的、WPF 程序也使用的中繼資料約定,例如報告更改屬性值時是否要求布局系統重新編寫元素的可視化對象。

說明:目前我使用最多的場景是前三條

三、WPF兩個重要特性

通過後面的學習會慢慢發現,WPF的許多功能都需要使用依賴屬性。但是,所有這些功能都是通過每個依賴屬性支援的兩個關鍵行為進行工作的——更改通知和動态值識别。

(1)更改通知

主要用于兩個場景:元素綁定和屬性觸發器

(2)動态值識别

依賴屬性因該行為而得名——本質上,依賴屬性依賴于多個屬性提供者,每個提供者都有各自的優先級。當從屬性檢索值時,WPF屬性系統會通過一系列步驟擷取最終值。

繼續閱讀