WPF ResourceDictionary 主题资源替换(一)

当咱们须要在程序中替换主题,更换另外一套背景、颜色、样式时,如何在不修改资源Key值,直接替换呢?windows

问题&疑问

 1. Key值冲突

同一ResourceDictionary中,不能够使用相同Keyspa

2. 资源替换

添加俩套样式,Xaml下是否能够将原有的资源(如样式)替换成新的资源?blog

加载顺序是否会冲突,好比俩个字典中都存有Image.Search图片资源,最终会以哪一个字典中的资源为准呢图片

 

ResourceDictionary的合并方案

WPF的ResourceDictionary合并时,合并的规则能解决此冲突及加载顺序问题资源

ResourceDictionary合并:文档

  1. 检查ReourceDictionary全部资源Key列表
  2. 检查ResourceDictionary.MergedDictionaries中的字典,从列表尾部遍历到表头。
  3. 按以上检查顺序,检查到相同Key值时,会以检查到的首个Key为准。即添加字典时,最后一个字典下的资源。

详细的官方文档,截图以下:get

因此,不一样主题的资源,能够经过MergedDictionaries添加不一样的字典,以加载顺序来覆盖以前的主题资源。io

相关文章
相关标签/搜索