zoukankan      html  css  js  c++  java
  • ResourceDictionary主题资源替换(一) :通过加载顺序来覆盖之前的主题资源

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

    问题&疑问

     1. Key值冲突

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

    2. 资源替换

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

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

    ResourceDictionary的合并方案

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

    ResourceDictionary合并:

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

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

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

  • 相关阅读:
    PHP中关于字符串的连接
    好用的FireFox(FF)插件
    Scripted Operation
    Scripted device
    chgrp chown
    wait_for_devices
    mysql create user
    mysql
    create user mysql
    Inserting/Removing shutters and filters
  • 原文地址:https://www.cnblogs.com/kybs0/p/10675462.html
Copyright © 2011-2022 走看看