在閱讀Internals of Dependeny Property in WPF後,我想知道在Silverlight for WP7中如何實現Dependeny屬性。對於調查使用來自xda forum的Reflector和Dll。WP7中內部屬性的依賴屬性
在WPF:
一個DependencyProperty維護所有 的DependencyProperty你在WPF對象層次登記的靜態參考。它維護 一個名爲PropertyFromName的HashTable,它在內部使用它來獲取 DependencyProperty對象。換句話說,每個dependencyProperty 對象都在全局HashTable中註冊。
在Silverlight的WP7 DependencyProperties幾乎相同的全局哈希表(實際上它是
static Dictionary<Type, Dictionary<string, DependencyProperty>> _registeredProperties
)
但通過的GetValue和的SetValue的源代碼,看後方法的DependencyObject class I see that _ registeredProperties根本不使用。
有人知道爲什麼它以這種方式實現嗎?或者我錯過了什麼? 預先感謝您。
你是對的@KooKiz。謝謝!也許你也知道爲什麼CoreDependencyProperty的值通過本地調用存儲在某個地方,而CustomAttachedDependencyProperty和CustomDependencyProperty的值存儲在DependencyObject類的_valueTable字段中? – 2012-07-18 20:43:34
不能肯定地說。這可能是因爲一些控件,比如WebBrowser,只是本地控件的包裝。所以這些控件可能更容易擁有本地依賴屬性。 – 2012-07-19 17:48:46
好主意,@KooKiz,thx。 – 2012-07-22 17:08:45