如何分配INotifyPropertyChanged的PropertyChanged事件?

Sye*_*yed 6 data-binding wpf interface inotifypropertychanged

我有以下代码,它工作正常.

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));
        }           
    } 
}
Run Code Online (Sandbox Code Playgroud)

当我在MainWindow的构造函数中创建"person"对象时,它将为person的"Name"属性赋值,那时PropertyChanged事件为NULL.

如果在Button_Click事件中分配了相同的"person"类属性"Name",则"PropertyChanged"事件为NOT NULL且指向OnPropertyChanged.

我的问题是如何将"PropertyChanged"事件分配给OnPropertyChanged方法?

提前致谢.

SLa*_*aks 5

PropertyChanged对象设置为a时DataContext,WPF数据绑定基础结构将添加处理程序,以便检测属性的更改.
您可以通过设置断点来观察这种情况.

OnPropertyChanged它指向的方法是内部WPF方法,您可以通过检查Target委托的属性来查看.