2011-08-16 27 views
5

Silverlight/WPF DependencyProperty啓用數據綁定,並指示何時該屬性值已更改,而不實施INotifyPropertyChanged。我的問題是如何在低級別工作 - 當DependencyObject,DependencyProperty和DispatcherObject都未定義任何事件時,DependencyProperty或DependencyObject如何執行此更改通知。這是否與DispatcherObject.Dispatcher屬性有關?瞭解DependencyProperty的工作原理和實現方式

依賴性質或DependencyObject的類,不本身 支持INotifyPropertyChanged的用於產生通知在數據綁定 操作的DependencyObject源屬性值更改的 的目的。

這個優秀的澄清採取字對字的來源:

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

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

回答

1

那麼,當你註冊你提供一個回調的DependencyProperty被稱爲當值變化。

Here你有更多的細節。我不認爲其他公開內容的WPF。我可能錯了。

4

依賴屬性在內部與綁定系統緊密集成。因此,不是「通知屬性已更改」,而是設置依賴項屬性的代碼可以直接調用到綁定系統並告訴它更新。

類似地,可以更新任何後代元素和/或可以更新佈局/度量/排列之類的東西,如繼承/附加屬性。它甚至可以告訴任何觸發器(在樣式或控件模板中)被重新評估。

調度程序並不真正相關,但可能在此過程中使用。

所以簡而言之,它被烘焙成WPF/Silverlight。

+0

「依賴屬性只能由DependencyObject類型使用」從上面的鏈接ref。 DependencyObject派生自DispatcherObject。 –

+0

@Webster - 是的,的確如此。你有問題嗎? – CodeNaked