如果资源字典不可观察,那么DynamicResource引用如何工作? 资源字典的添加/删除方法是否具有内部代码,以便“轮询”所有DynamicResource引用并在删除或添加它们时刷新它们?
答案 0 :(得分:9)
每个ResourceDictionary包含三个所有者列表。一个用于FrameworkElement,一个用于Application,另一个用于FrameworkContentElement。当您访问Resources属性时,正在设置所有者。每个ResourceDictionary还将其所有者传播到合并的字典。当字典发生变化时,它会通知所有者。此通知实际上使用包含资源表达式的本地值搜索依赖项属性然后强制每个表达式重新评估。
所有这些代码都是内部的。