標籤:style blog http color 使用 strong
- 定義依賴項屬性
public class FrameworkElement : UIElement{ public static readonly DependencyProperty MarginProperty; static FrameworkElement() { FrameworkPropertyMetadata metadata = new FrameworkPropertyMetadata(new Thickness(), FrameworkPropertyMetadataOptions.None); MarginProperty = DependencyProperty.Register("Margin", typeof(Thickness), typeof(FrameworkElement), metadata, null); } public Thickness Margin { set { SetValue(MarginProperty, value); } get { return (Thickness)GetValue(MarginProperty); } }} 只能為依賴對象(繼承自DependencyObject的類)添加依賴項屬性。它是DependencyProperty類的執行個體,屬性資訊應該始終保持可用,甚至可能需要在多個類中共用這些資訊,因此,必須將DependencyProperty對象定義為與之相關聯的類的靜態欄位。根據約定,定義依賴項屬性的欄位的名稱為在普通屬性的末尾加上單詞“Property”,且使用readonly關鍵字進行修飾。
DependencyProperty不能被直接執行個體化,因為DependencyProperty沒有公有的建構函式,只能使用靜態DependencyProperty.Register()方法建立。
註冊一個依賴項屬性需要經過兩個步驟,首先建立一個FrameworkPropertyMetadata對象,該對象希望通過依賴項屬性使用什麼服務。其次通過調用DependencyProperty.Register()靜態方法註冊屬性,在這一步中需提供以下幾個要素:
1) 屬性名稱:在該樣本中為Margin
2) 屬性使用的資料類型:在該樣本中為Thickness結構
3) 擁有該屬性的類型:在該樣本中為FrameworkElement類
4) 一個具有附加屬性設定的 FrameworkPropertyMetadata對象,該要素是可選的
5) 一個用於驗證屬性的回呼函數,該要素是可選的
FrameworkPropertyMetadata類的所有屬性的說明如下: