WPF ResourceDictionary 主题资源替换
原文:WPF ResourceDictionary 主题资源替换
当我们需要在程序中替换主题,更换另一套背景、颜色、样式时,如何在不修改资源Key值,直接替换呢?
问题&疑问
1. Key值冲突
同一ResourceDictionary中,不可以使用相同Key

2. 资源替换
添加俩套样式,Xaml下是否可以将原有的资源(如样式)替换成新的资源?
加载顺序是否会冲突,比如俩个字典中都存有Image.Search图片资源,最终会以哪个字典中的资源为准呢

ResourceDictionary的合并方案
WPF的ResourceDictionary合并时,合并的规则能解决此冲突及加载顺序问题
ResourceDictionary合并:
- 检查ReourceDictionary所有资源Key列表
- 检查ResourceDictionary.MergedDictionaries中的字典,从列表尾部遍历到表头。
- 按以上检查顺序,检查到相同Key值时,会以检查到的首个Key为准。即添加字典时,最后一个字典下的资源。
详细的官方文档,截图如下:

所以,不同主题的资源,可以通过MergedDictionaries添加不同的字典,以加载顺序来覆盖之前的主题资源。
WPF ResourceDictionary 主题资源替换的更多相关文章
- WPF ResourceDictionary 主题资源替换(一)
		当我们需要在程序中替换主题,更换另一套背景.颜色.样式时,如何在不修改资源Key值,直接替换呢? 问题&疑问 1. Key值冲突 同一ResourceDictionary中,不可以使用相同Ke ... 
- ResourceDictionary主题资源替换(二) :通过加载顺序来覆盖之前的主题资源
		之前的ResourceDictionary主题资源替换(一)通过加载顺序来覆盖之前的主题资源,介绍了WPF框架对ResourceDictionary资源的合并规则. 此篇介绍一种在编译期间,实现资源替 ... 
- WPF  ResourceDictionary的使用
		作用:一个应用程序中,某个窗口需要使用样式,但是样式非常多,写在一个窗口中代码分类不方便.最好Style写在专门的xaml文件中,然后引用到窗口中,就像HTML引用外部css文件一样. 初衷:就在于可 ... 
- WPF ResourceDictionary XAML资源 c#代码 获取与遍历
		使用C#代码来获取XAML资源,除去正常的FindResource.而且是能查询到资源的对象. 说实话还是很麻烦的. 比如说我现在有一堆静态资源放在xaml的资源中,我想通过绑定的方式来获取. 好比是 ... 
- Prism5.0新内容 What's New in Prism Library 5.0 for WPF(英汉对照版)
		Prism 5.0 includes guidance in several new areas, resulting in new code in the Prism Library for WPF ... 
- Prism.WPF -- Prism框架使用(上)
		本文参考Prism官方示例 创建Prism项目 将App.xaml中的WPF标准Application替换为PrismApplication,移除StartupUri属性: 将App.xaml.cs中 ... 
- Prism5.0新内容(纯汉语版)
		Prism 5.0 包含很多新东西,新的快速入门示例,新的范例,更新的文档,Prism类库代码的改变.用来解决已有问题,回应社区所提的需求.(这句话跟 What's New in Prism Libr ... 
- WPF整理-使用ResourceDictionary管理Logical Resources
		“Logical resources may be of various types, such as brushes, geometries, styles, and templates.Placi ... 
- 总结:WPF中ResourceDictionary资源文件的查找和遍历方法
		原文:总结:WPF中ResourceDictionary资源文件的查找和遍历方法 一.查找包含制定关键字的资源 ResourceDictionary GetThemeDictionary() ... 
随机推荐
- January 15 2017 Week 3 Sunday
			A good book is the best of friends, the same today and forever. 好书乃挚友,情谊永不渝. For a coder, that is no ... 
- [EffectiveC++]item38:通过复合塑膜出has -a 或“根据某物实现出”
			Model "has-a"or “is-implemented-in-terms-of” through composition 
- 我的第一个Python随笔
			自学Python也很长时间了,注册博客园写了第一篇随笔.之前想过很多次,但是始终不知道该怎么开始,内容如何,现在想想,随笔嘛,是自己的想法,也自己的实践,又是自己的锻炼.话不多说,开始今天的正式内容. ... 
- avl 平衡搜索二叉树的旋转图示
			avl树的平衡是通过旋转不平衡子树完成的,旋转是如何完成的?这有幅不错的图http://upload.wikimedia.org/wikipedia/en/1/15/Tree_Rotations.gi ... 
- Service Fabric eShop On Containers
			Service Fabric承载eShop On Containers 从模块化到微服务化 从Pet Shop 到eShop on Container都是Microsoft在技术演进的路径上给开发者展 ... 
- 编程三基:cpu:算法,总线(io):一切皆文件;内存:运行空间
			编程三基:cpu:算法,总线:一切皆文件:内存:数据.运行空间 原文找不到了. 
- ADF中VO的删除操作初探
			在ADF的VO中,真实提交更改是在commit 方法执行之后,如以下增加操作 EntityDefImpl departmentEODef = DepartmentEOImpl. getDefiniti ... 
- python SQL注入测试脚本(更新中)
			import requests import json import warnings warnings.filterwarnings("ignore") url = 'https ... 
- jquery基础介绍-转
			学习目的:理解 Ajax 及其工作原理,构建网站的一种有效方法. Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写. 下面是 Ajax 应用程 ... 
- C# 密封类sealed
			1.密封类定义 如果我们不希望自己编写的类被继承:如果有的类已经没有再被继承的必要,这时,我们可以使用sealed修饰符在类中进行声明,以达到该类不能派生其它类的目的,该类就被称为密封类. 2.密封类 ... 
