我正在使用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()
。