WPF点滴之合并资源与动态换肤

合并多个外部资源字典成为本地字典

示例代码 

<ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="1.xmal"></ResourceDictionary>
                <ResourceDictionary Source="2.xmal"></ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>

描述

 合并多个外部资源字典成为本地字典。当需要合并更多字典的时候只要在ResourceDictionary.MergedDictionaries节中顺序增加引用。

特别提示
 合并字典(MergedDictionaries 集合中的字典)中对同一对象的同一子元素进行定义的时候,会产生覆盖效果:在这种情况下,所返回的资源将来自在 MergedDictionaries 集合中最后一个找到的字典。(在这里会显示myresourcedictionary2.xaml中的定义)。

合并字典(MergedDictionaries 集合中的字典)中对同一对象的不同子元素定义的时候会产生叠加效果。

 

动态换肤,也就是后台更改合并资源

 

合并资源放在APP级:

  Application.Current.Resources.MergedDictionaries.Clear();
                ResourceDictionary newRD = new ResourceDictionary();
                newRD.Source = new Uri("1.xaml", UriKind.Relative);
                Application.Current.Resources.MergedDictionaries.Add(newRD);

合并资源放在Window级:

this.Resources.MergedDictionaries.Clear();
                ResourceDictionary newRD = new ResourceDictionary();
                newRD.Source = new Uri("1.xaml", UriKind.Relative);        
                this.Resources.MergedDictionaries.Add(newRD);

 

如果有多个资源合并在一起,只想更改某个资源,可以这样更改

 

ResourceDictionary newRD = new ResourceDictionary();
newRD.Source = new Uri("1.xaml", UriKind.Relative);
Application.Current.Resources.MergedDictionaries[0] = newRD;

 

 

转载于:https://www.cnblogs.com/amw2738/p/3672877.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值