【问题标题】:Understanding how DependencyProperty works and is implemented了解 DependencyProperty 如何工作和实现
【发布时间】:2011-08-16 14:26:36
【问题描述】:

Silverlight/WPF DependencyProperty 启用数据绑定并指示属性值何时发生更改,而无需实现 INotifyPropertyChanged。我的问题是这在低级别是如何工作的——当 DependencyObject、DependencyProperty 和 DispatcherObject 都没有定义任何事件时,DependencyProperty 或 DependencyObject 如何执行此更改通知。这与DispatcherObject.Dispatcher 属性有关吗?

依赖属性或 DependencyObject 类本身并不 支持 INotifyPropertyChanged 用于生成通知 数据绑定的 DependencyObject 源属性值的更改 操作。

这一出色的说明逐字逐句摘自:

http://msdn.microsoft.com/en-us/library/ms752914.aspx

http://msdn.microsoft.com/en-us/library/ms753358.aspx

【问题讨论】:

    标签: c# wpf windows silverlight-4.0


    【解决方案1】:

    依赖属性在内部与绑定系统紧密集成。因此,设置依赖属性的代码可以直接调用绑定系统并告诉它更新,而不是“通知属性更改”。

    类似地,可以在任何后代元素上更新继承/附加属性等内容和/或可以更新布局/度量/排列。它甚至可以告诉任何触发器(在 Styles 或 ControlTemplates 中)被重新评估。

    Dispatcher 并不真正相关,但可以在此过程中使用。

    简而言之,它已融入 WPF/Silverlight。

    【讨论】:

    • “依赖属性只能由 DependencyObject 类型使用”来自上面的链接参考。 DependencyObject 派生自 DispatcherObject。
    • @Webster - 是的,这是真的。您对此有疑问吗?
    【解决方案2】:

    好吧,当您注册一个 DependencyProperty 时,您会提供一个回调,以便在值更改时调用。

    Here你有更多的细节。我不认为关于 WPF 内部的任何其他内容是公开的。我可能错了。

    【讨论】:

      猜你喜欢
      • 2019-03-03
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 2021-07-05
      • 1970-01-01
      • 2021-04-03
      • 2011-10-29
      相关资源
      最近更新 更多