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

时间:2013-11-20 17:07:14

标签: c#-4.0 inotifypropertychanged propertychanged

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

我已阅读documentation关于PropertyChanged个事件,且PropertyChangedEventArgs只有PropertyName个属性:

  

在组件上更改属性时会引发PropertyChanged事件。 PropertyChangedEventArgs对象指定已更改的属性的名称。

     

PropertyChangedEventArgs提供PropertyName属性以获取已更改的属性的名称。

问题是:我需要获取已更改属性的VALUE,而不是其名称,所以我问:

  

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

(因为如果没有,我想我必须创建一个类似于ReportProgress类的BackgroundWorker事件,是吗?)

感谢阅读。

1 个答案:

答案 0 :(得分:2)

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

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

结帐Type.GetProperty()PropertyInfo.GetValue()