如果无法观察到资源字典,则DynamicResource引用如何工作?
资源字典的Add/Remove方法是否具有内部代码,可以对所有DynamicResource引用进行“轮询”,并在删除或添加它们时刷新它们?
最佳答案
每个ResourceDictionary包含三个所有者列表。一个用于FrameworkElement,一个用于Application,另一个用于FrameworkContentElement。当您访问“资源”属性时,将设置所有者。同样,每个ResourceDictionary都会将其所有者传播到合并的字典。字典更改时,它会通知所有者。该通知实际上使用包含资源表达式的本地值搜索依赖项属性。然后,每个表达式都必须重新评估。
所有这些代码都是内部的。