WPF自制控制元件如何定義依賴屬性
WPF系統封裝的控制元件基本可滿足使用,但有時為了美觀或功能的需求需要自定義控制元件,筆者以為自定義控制元件最重要在於如何定義依賴屬性,具體實施如下:
1)註冊屬性:
public static readonly DependencyProperty XXXProperty =
DependencyProperty.Register("XXX", typeof(double), typeof(自定義控制元件名),
new FrameworkPropertyMetadata(0.00, new PropertyChangedCallback(XXXPropertyChangedCallback)));
引數說明:
"XXX":要註冊的依賴項物件的名稱,要跟返回的XXXProperty中的XXX保持一致。
typeof(double):屬性的型別,此例以double為例。
typeof(自定義控制元件名):正註冊依賴項物件的所有者型別,即所在類名。
new FrameworkPropertyMetadata(0.00, new PropertyChangedCallback(XXXPropertyChangedCallback)):依賴項物件的屬性元資料。
0.00:依賴項物件的屬性初始值,要保證是typeof(double)中的double型別,此例即是,如定義其他型別要賦予符合該型別又滿足實際意義的值。
new PropertyChangedCallback(XXXPropertyChangedCallback):依賴項物件的有效屬性值更改時呼叫的回撥,就是屬性值變了要做的反應處理,處理內容在XXXPropertyChangedCallback方法中定義,稍後定義該方法。
2)定義屬性:
public double XXX
{
get { return (double)GetValue(XXXProperty); }
set { SetValue(XXXProperty, value); }
}
屬性名XXX與1)中XXX保持一致,double是例子與1)中定義的型別一致即可。
3)定義依賴項物件的有效屬性值更改時呼叫的回撥函式
public static void XXXPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
引數說明:
d:屬性值已更改的物件
e:由任何事件發出的事件資料,該事件跟蹤對此屬性的有效值的更改,有用的兩個屬性OldValue變更前的值和NewValue變更後的值,說白了,該方法的功能就是如何安置新舊值。
以上完成。