【问题标题】:What's behind INotifyPropertyChanged's PropertyChanged event handler? What is the message receiveing/processing mechanism?INotifyPropertyChanged 的​​ PropertyChanged 事件处理程序背后是什么?消息接收/处理机制是什么?
【发布时间】:2014-03-27 20:42:58
【问题描述】:

我们一直在使用INotifyPropertyChanged。它允许正在开发的控件订阅PropertyChanged 事件。

同时,接口的实现非常简单,实际上并没有为PropertyChanged 事件处理程序假定任何显式代码。下面是一个典型的实现示例:

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChange(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

似乎 WPF 本身为声明的成员“PropertyChanged”分配了一个事件处理程序。所以我的问题是 WPF 究竟对这个成员做了什么。

也许任何人都可以推荐一篇关于INotifyPropertyChanged 背后的确切机制的好文章。

我看到SO上很多人已经问过一些类似的问题,但我没有找到任何明确的答案。

谢谢!

【问题讨论】:

  • INP 早于 WPF。 WPF 只是将现有的基础结构用于其绑定。直接回答:the Binding class。更有趣:Dependency Properties
  • 你说的“这个控件”是什么意思?
  • @Blam :我删除了包含“这个控件”的整个句子——这比澄清我的问题的性质更令人困惑。
  • @HenkHolterman :非常感谢您的参考!看来他们确实澄清了 INotifyPropertyChanged 的​​很多背景。
  • 也许我错过了一些东西,但是是什么让你认为它很复杂?鉴于目标实现了 INotifyPropertyChanged,所有需要发生的是该事件的通用处理程序。

标签: c# .net wpf inotifypropertychanged


【解决方案1】:

如果您想以交互方式探索 INotifyPropertyChanged 发生了什么,我强烈建议您访问 Microsoft 的新参考源站点。我一直在广泛使用它来了解 .NET 的幕后情况。

这里是你的起点:

INotifyPropertyChanged (System)

您还会在 PresentationFramework 中看到一个 INotifyPropertyChanged2 实现,您可能会想要查看它。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2016-05-08
    • 2011-09-06
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多