2014-04-10 19 views
1

我是初學者。這個問題是關於什麼是從以下鏈接有關依賴項屬性的本地值分辨率解釋WPF DependencyPropeprty

http://wpftutorial.net/DependencyProperties.html

它在解釋「神奇背後的」網頁內部分通過此鏈接指向的局部值,如果存在,則通過使用一個對照字典的鍵來解決,該字典作爲控件中的靜態字典而存在。字典中的鍵每種類型都是唯一的(例如,按鈕)。如果我錯了,請糾正我的錯誤,但就我的理解而言,有兩個字典,一個帶有密鑰和「包含回調和默認值的元數據」,另一個帶有密鑰和屬性值。

爲了更好地解釋我的問題,讓我們假設我們有兩個按鈕的WPF應用程序,問題的依賴屬性是「背景」。在這種情況下,如果這兩個按鈕都有兩個不同的背景設置爲本地值,則應該在第一個字典(鍵和元數據)中包含一個Key /值,並在第二個字典中包含兩個鍵/值背景值被存儲)。我的問題在於,如果鍵「必須是每種類型都是唯一的」,那麼我們如何才能在第二個字典中獲得兩個不同的鍵,每個鍵都有不同的背景值,對應於兩個按鈕?也就是說,不是兩個按鈕都具有相同的按鍵,因爲按鍵每種類型都是唯一的(即,兩個按鈕都具有相同的類型)?

有人能告訴我混亂在哪裏嗎?

+2

你爲什麼不看一下源代碼?獲取例如JetBrains dotPeek並檢查框架程序集。 – Clemens

回答

0

有很多字典,不只是兩個。並非所有字典都是。主要是他們是HashSets。最上面的字典有一個關鍵值對,每個控件類型的關鍵字唯一,每個定義的關鍵字值是唯一的。在這個價值中,所有維護都在發生。例如,如果你有100個按鈕都具有相同的顏色,那麼只有一種背景顏色存儲在引擎蓋下,相關屬性非常聰明和快速。它的相當複雜,就像克萊門斯已經向你建議的那樣,如果你想知道更多,也許你應該檢查框架。如果你是新來的wpf然後不這樣做。按照原樣使用它,一旦它不工作,在這裏發佈一個問題。對於一個新手來說,DP是沒有任何意義的。它需要大量的wpf知識來理解爲什麼按照它們的方式實施DP。