在实现INPC时,是否可以获取更改后的属性的值,而不是仅获取其名称



我正在使用INotifyPropertyChanged,以便类库中的域对象可以通知其执行方法的进度。这与WPF或DataBinding情况无关。

我已经阅读了关于PropertyChanged事件的文档,并且PropertyChangedEventArgs只有PropertyName属性:

当组件的属性发生更改时,会引发PropertyChanged事件。PropertyChangedEventArgs对象指定更改的特性的NAME。

PropertyChangedEventArgs提供PropertyName属性以获取更改的属性的NAME。

问题是:我需要得到更改后的属性的VALUE,而不是它的名称,所以我问:

有没有办法在PropertyChanged事件参数中获取属性的值?

(因为如果没有,我想我将不得不为自己创建一个ReportProgress事件,类似于BackgroundWorker类,对吗?)

感谢阅读。

您仍然可以通过处理PropertyChanged来获得值。只需使用名称返回并获取值。

someObject.PropertyChanged += (sender, e) => {
    var value = sender.GetType()
        .GetProperty(e.PropertyName)
        .GetValue(sender, null);
    // do something with value?
};

查看Type.GetProperty()PropertyInfo.GetValue()

相关内容

  • 没有找到相关文章

最新更新