WPF依赖项属性
WPF中的依賴項屬性
?
WPF的工程是由XAML文件和C#文件溝通構成的。C#在工程中主要用于處理邏輯,而XAML則用來在軟件界面上顯示。很多情況下我們都希望后臺的屬性改變之后能夠在前臺的界面上也呈現出來這種變化。常見的這種通知變化的方式有兩種,分別是:
1. 使用PropertyChangedEventHandler在屬性改變的時候通知用戶界面。
2. 使用依賴項屬性。
?
例子:
XAML文件:
<TextBox Text="{Binding Path=StudentAge}"Grid.Row="3"Grid.Column="2"VerticalAlignment="Top" Margin="0,5,0,0" />?
說明:在這個文件中放置了一個TextBox,該元素的Text屬性與數據模型中的屬性StudentAge
綁定。
C#文件:
?
int _studentAge;public int StudentAge{get{return _studentAge;}set{_studentAge = value;}}?
說明:在C#文件中雖然定義了StudentAge屬性,并完成了與XAML的綁定,但是現在屬性值改變的時候UI界面上不會發生改變。這就需要前面提到的兩種處理方式去實現后臺數據與前臺UI之間的同步變化。
?
方式一:使用PropertyChangedEventHandler在屬性改變的時候通知用戶界面。
#region INotifyPropertyChanged Memberspublic event PropertyChangedEventHandler PropertyChanged;#endregionvoid OnPropertyChanged(string propertyName){if (PropertyChanged != null)PropertyChanged(this, new PropertyChangedEventArgs(propertyName));}int _studentAge;public int StudentAge{get{return _studentAge;}set{_studentAge = value;OnPropertyChanged("StudentAge"); //這句代碼很重要,用其通知前臺界面//去改變 }}?
說明:首先申明一個PropertyChangedEventHandler事件,并實現OnPropertyChanged函數。用于觸發事件,并通知用戶界面改變。
?
小結:通過以上的方法就能夠實現后臺數據改變并在前臺界面上顯示的效果。這是一種方法。還有一種方法就是下面將要說明的依賴項屬性。
?
方法二:依賴項屬性
public static readonly DependencyProperty StudentAgeProperty = DependencyProperty.Register("StudentAge",typeof (int),typeof (StudentData));public int StudentAge{get { return (int)GetValue(StudentAgeProperty); }set { SetValue(StudentAgeProperty, value); }}?
說明:依賴項屬性使用的時候只需要先創建一個依賴項的實例。如上面的StudentAgeProperty。創建的時候調用Register注冊。注冊函數的參數包含了屬性名。然后按照上面的方式聲明屬性就可以了。
?
總結:在自定義類中一般都比較少使用依賴項屬性,使用的時候用前面的第一種方式解決就可以了(使用依賴項屬性的時候會出現錯誤,因為GetValue和SetValue函數都是來自于Control類的,自定義類繼承于這個類才能使用這兩個方法)。但是對于要擴展一個控件的屬性的時候依賴項屬性就比較有用了!
轉載于:https://www.cnblogs.com/tianyou/archive/2012/12/12/2814310.html
總結
- 上一篇: Ribbon For WPF的使用
- 下一篇: KM算法模板