WPF ResourceDictionary 主题资源替换
程序员文章站
2022-06-28 20:30:27
当我们需要在程序中替换主题,更换另一套背景、颜色、样式时,如何在不修改资源Key值,直接替换呢? 问题&疑问 1. Key值冲突 同一ResourceDictionary中,不可以使用相同Key 2. 资源替换 添加俩套样式,Xaml下是否可以将原有的资源(如样式)替换成新的资源? 加载顺序是否会冲 ......
当我们需要在程序中替换主题,更换另一套背景、颜色、样式时,如何在不修改资源key值,直接替换呢?
问题&疑问
1. key值冲突
同一resourcedictionary中,不可以使用相同key
2. 资源替换
添加俩套样式,xaml下是否可以将原有的资源(如样式)替换成新的资源?
加载顺序是否会冲突,比如俩个字典中都存有image.search图片资源,最终会以哪个字典中的资源为准呢
resourcedictionary的合并方案
wpf的resourcedictionary合并时,合并的规则能解决此冲突及加载顺序问题
resourcedictionary合并:
- 检查reourcedictionary所有资源key列表
- 检查resourcedictionary.mergeddictionaries中的字典,从列表尾部遍历到表头。
- 按以上检查顺序,检查到相同key值时,会以检查到的首个key为准。即添加字典时,最后一个字典下的资源。
详细的,截图如下:
所以,不同主题的资源,可以通过mergeddictionaries添加不同的字典,以加载顺序来覆盖之前的主题资源。
上一篇: .net core入门-发布及部署
推荐阅读
-
WPF 添加 Resources Dictionary 资源 一般类库项目中无法添加资源文件(ResourceDictionary)
-
ResourceDictionary主题资源替换(二) :通过加载顺序来覆盖之前的主题资源
-
WPF ResourceDictionary 主题资源替换
-
WPF 使用自定义控件(custom control),资源字典(ResourceDictionary),用户控件(user control),及之间的对比
-
ResourceDictionary主题资源替换(二) :通过加载顺序来覆盖之前的主题资源
-
WPF 添加 Resources Dictionary 资源 一般类库项目中无法添加资源文件(ResourceDictionary)
-
WPF ResourceDictionary 主题资源替换