谁是PropertyChangedEventHandler的订阅者

时间:2018-02-01 20:09:10

标签: c# wpf mvvm

我是WPF MVVM的新手。

实现INotifyPropertyChanged接口后,会添加一个事件:

 public event PropertyChangedEventHandler PropertyChanged;

根据我的理解,“PropertyChangedEventHandler”是一个委托,所以我想了解订阅这个委托的方法是什么?

1 个答案:

答案 0 :(得分:0)

INotifyPropertyChanged为您提供:

public event PropertyChangedEventHandler PropertyChanged;

然后您可以添加OnPropertyChanged方法以在属性更改时进行处理:

protected virtual void OnPropertyChanged(string propertyName)
{
    PropertyChangedEventHandler handler = PropertyChanged;
    if (handler != null)
    {
        var e = new PropertyChangedEventArgs(propertyName);
        handler(this, e);
    }
}

那么,当您想要通知属性已更改时,您可以从属性的set方法本身调用OnPropertyChanged。在这个例子中,ShowRock是一个属性,当它改变时(通过setter),它让世界知道它发生了变化:

public bool ShowRock
{
    get { return _showRock; }
    set
    {
        _showRock = value;
        OnPropertyChanged("ShowRock");
    }
}