【问题标题】:Is it possible to get the Value of a changed property instead of only its Name when implementing INPC?实现 INPC 时是否可以获取更改属性的值而不是仅获取其名称?
【发布时间】:2013-12-04 19:43:34
【问题描述】:

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

我已经阅读了关于PropertyChanged 事件的documentation 并且PropertyChangedEventArgs 只有一个PropertyName 属性:

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

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

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

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

(因为如果不是,我想我必须自己创建一个ReportProgress 事件,类似于BackgroundWorker 类,对吗?)

感谢阅读。

【问题讨论】:

  • sender.GetType().GetProperty("PropertyName").GetValue(sender, null)
  • 你为什么要为这个NPC?使用IProgress<T>/Progress<T>
  • @mikez 不幸的是,我在 VisualStudio 2010 中使用 C# 4.0 ... 那么您知道 INPC 的其他替代方案吗?谢谢!

标签: c#-4.0 inotifypropertychanged propertychanged


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2019-06-28
    相关资源
    最近更新 更多