欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WPF ResourceDictionary 主题资源替换

程序员文章站 2022-06-28 20:30:27
当我们需要在程序中替换主题,更换另一套背景、颜色、样式时,如何在不修改资源Key值,直接替换呢? 问题&疑问 1. Key值冲突 同一ResourceDictionary中,不可以使用相同Key 2. 资源替换 添加俩套样式,Xaml下是否可以将原有的资源(如样式)替换成新的资源? 加载顺序是否会冲 ......

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

问题&疑问

 1. key值冲突

同一resourcedictionary中,不可以使用相同key

WPF ResourceDictionary 主题资源替换

2. 资源替换

添加俩套样式,xaml下是否可以将原有的资源(如样式)替换成新的资源?

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

WPF ResourceDictionary 主题资源替换

 

resourcedictionary的合并方案

wpf的resourcedictionary合并时,合并的规则能解决此冲突及加载顺序问题

resourcedictionary合并:

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

详细的,截图如下:

WPF ResourceDictionary 主题资源替换

所以,不同主题的资源,可以通过mergeddictionaries添加不同的字典,以加载顺序来覆盖之前的主题资源。