了解DependencyProperty如何工作和实现

时间:2011-08-16 14:26:37

标签: c# wpf windows silverlight-4.0

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

2 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:1)

好吧,当您注册DependencyProperty时,您提供了一个在值发生变化时调用的回调。

Here您有更多详情。关于WPF的内部,我认为没有任何其他内容可以公开。我可能错了。