我有以下代码,它工作正常。如何分配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 –