【发布时间】:2011-11-18 08:38:11
【问题描述】:
我有以下代码,它工作正常。
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));
}
}
}
当我在MainWindow的构造函数中创建“person”对象时,它会为person的“Name”属性赋值,此时PropertyChanged事件为NULL。
如果在 Button_Click 事件中分配了相同的“person”类属性“Name”,则“PropertyChanged”事件为NOT NULL并且它指向 OnPropertyChanged。
我的问题是如何将“PropertyChanged”事件分配给 OnPropertyChanged 方法?
提前致谢。
【问题讨论】:
-
你真的应该将你的 onpropertychanged 设置为
var handler=PropertyChanged; if (null!=handler) handler(this,new PropertyChangedEventArgs(strPropertyName)这将帮助你避免竞争条件
标签: wpf data-binding interface inotifypropertychanged