Windows Presentation Foundation (WPF) 提供了一組服務
這些服務可用於擴展公共語言運行庫 (CLR) 屬性的功能
這些服務通常統稱為 WPF 屬性系統
由 WPF 屬性系統支持的屬性稱為依賴項屬性
本概述介紹 WPF 屬性系統以及依賴項屬性的功能
這包括如何在可擴展應用程序標記語言 (XAML) 中和代碼中使用現有的依賴項屬性
本概述還介紹了依賴項屬性所特有的方面(如依賴項屬性元數據)
並說明了如何在自定義類中創建自己的依賴項屬性
先決條件
本主題假設您在 CLR 和面向對象的編程方面有一些基礎知識若要采用本主題中的示例還應當了解 XAML 並知道如何編寫 WPF 應用程序
依賴項屬性和 CLR 屬性
在 WPF 中屬性通常公開為公共語言運行庫 (CLR) 屬性在基本級別您可以在根本不知道這些屬性實現為依賴項屬性的情況下直接與它們交互但是您應當熟悉 WPF 屬性系統的部分或全部功能才能利用這些功能
依賴項屬性的用途在於提供一種方法來基於其他輸入的值計算屬性值這些其他輸入可以包括系統屬性(如主題和用戶首選項)實時屬性確定機制(如數據綁定和動畫/演示圖板)重用模板(如資源和樣式)或者通過與元素樹中其他元素的父子關系來公開的值另外可以通過實現依賴項屬性來提供獨立驗證默認值監視其他屬性的更改的回調以及可以基於可能的運行時信息來強制指定屬性值的系統派生類還可以通過重寫依賴項屬性元數據(而不是重寫現有屬性的實際實現或者創建新屬性)來更改現有屬性的某些具體特征
在 SDK 參考中可以根據某個屬性的托管引用頁上是否存在依賴項屬性信息部分來確定該屬性是否為依賴項屬性依賴項屬性信息部分包括一個指向該依賴項屬性的 DependencyProperty 標識符字段的鏈接還包括一個為該屬性設置的元數據選項的列表每個類的重寫信息以及其他詳細信息
依賴項屬性支持 CLR 屬性
依賴項屬性和 WPF 屬性系統通過提供一個支持屬性的類型來擴展屬性功能這是使用私有字段支持該屬性的標准模式的替代實現方法該類型的名稱是 DependencyProperty定義 WPF 屬性系統的另一個重要類型是 DependencyObjectDependencyObject 定義可以注冊和擁有依賴項屬性的基類
下面匯集了在本軟件開發工具包 (SDK) 文檔中在討論依賴項屬性時所使用的術語
依賴項屬性一個由 DependencyProperty 支持的屬性
依賴項屬性標識符一個 DependencyProperty 實例在注冊依賴項屬性時作為返回值獲得之後將存儲為一個類成員在與 WPF 屬性系統交互的許多 API 中此標識符用作一個參數
CLR包裝屬性的實際 get 和 set 實現這些實現通過在 GetValue 和 SetValue 調用中使用依賴項屬性標識符來合並此標識符從而使用 WPF 屬性系統為屬性提供支持
下面的示例定義 IsSpinning 依賴項屬性並說明 DependencyProperty 標識符與它所支持的屬性之間的關系
.NET編程免費提供,內容來源於互聯網,本文歸原作者所有。