)實現INotifyPropertyChanged的類。 WPF
請看看下面的代碼:此類的
public class MyClass : INotifyPropertyChanged
{
private string _myName;
public string MyName
{
get { return _myName; }
set
{
if (_myName != value)
{
_myName = value;
OnPropertyChanged("MyName");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
對象作爲一個DataContext的WPF窗體上的TextBox控件。
想法很簡單:對該對象的MyName屬性所做的更改應自動顯示在文本框中。它的工作原理,但我不明白爲什麼。
請按照我的思維方式,指出哪裏我做錯了......
我們設置MYNAME一個新的價值。程序轉到'setter',它調用'OnPropertyChanged'。它轉到'OnPropertyChanged'並檢查'PropertyChanged'是否爲空。
而事實並非如此。我不知道爲什麼,因爲我沒有添加任何事件處理程序到這個事件。
那麼......它是如何工作的?
謝謝!
的可能重複[如何WPF INotifyPropertyChanged的工作?](http://stackoverflow.com/questions/6789236/how-does-wpf-inotifypropertychanged-work) –
您應改變,如果(的PropertyChanged!= NULL) PropertyChanged(this,new PropertyChangedEventArgs(propertyName));到var處理程序= PropertyChanged; if(handler!= null) handler(this,new PropertyChangedEventArgs(propertyName));好像propertychanged處理程序在if檢查和調用之間發生了變化,那麼你會得到一個空ref參數異常 – MikeT