1. 程式人生 > >依賴屬性(Dependency Properties)進階(二)

依賴屬性(Dependency Properties)進階(二)

EntryIndex entryIndex=LookupEntry(dp.GlobalIndex);
EffectiveValueEntry valueEntry=GetValueEntry(entryIndex,dp,null,RequestFlags.FullyResolved);
return valueEntry.Value;

這幾句話程式碼中屢次出現了Entry這個詞,Entry是“入口”的意思。WPF的依賴屬性系統在存放值的時候會把每個有效值存放在一個“小房間”裡,每個“小房間”都有自己的入口——檢索演算法只要找到這個入口、走進入口就能拿到依賴屬性的值。這裡說的“小房間”實際上就是EffectiveValueEntry類的例項。EffectiveValueEntry的所有構造器都包含一個DependencyProperty型別的引數,換句話說,每個EffectiveValueEntry都關聯著一個DependencyProperty。EffectiveValueEntry類具有一個名為PropertyIndex的屬性,這個屬性的值實際上就是與之關聯的DependencyProperty的GlobalIndex屬性值(就是DependencyProperty例項的雜湊值)。