我有以下代碼,它工作正常。如何分配INotifyPropertyChanged的PropertyChanged事件?
public partial class MainWindow : Window
{
Person person;
public MainWindow()
{
InitializeComponent();
person = new Person { Name = "ABC" };
this.DataContext = person;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
person.Name = "XYZ";
}
}
class Person: INotifyPropertyChanged
{
string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
OnPropertyChanged("Name");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string strPropertyName)
{
if(null != PropertyChanged)
{
PropertyChanged(this,
new PropertyChangedEventArgs(strPropertyName));
}
}
}
當我創建的主窗口的構造函數中的「人」的對象,它會爲分配的人「名稱」屬性的值,到時候PropertyChanged事件是NULL。
如果在Button_Click事件中分配了相同的「人物」類屬性「名稱」,「PropertyChanged」事件是NOT NULL並且它指向OnPropertyChanged。
我的問題是如何將「PropertyChanged」事件分配給OnPropertyChanged方法?
在此先感謝。
你應該真的把你的onpropertychanged做成var handler = PropertyChanged; if(null!= handler)handler(this,new PropertyChangedEventArgs(strPropertyName)'this will help you avoid a race condition –