1. 程式人生 > >WPF自制控制元件如何定義依賴屬性

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變更後的值,說白了,該方法的功能就是如何安置新舊值。

以上完成。