WPF ResourceDictionary 主题资源替换

2021-06-09 02:05

阅读:638

标签:col   windows   window   lan   img   .com   controls   att   cti   

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

问题&疑问

 1. Key值冲突

同一ResourceDictionary中,不可以使用相同Key

技术图片

2. 资源替换

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

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

技术图片

 

ResourceDictionary的合并方案

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

ResourceDictionary合并:

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

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

技术图片

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

 

WPF ResourceDictionary 主题资源替换

标签:col   windows   window   lan   img   .com   controls   att   cti   

原文地址:https://www.cnblogs.com/kybs0/p/10675462.html


评论


亲,登录后才可以留言!