如何动态更改 ResourceDictionary [英] How to change ResourceDictionary Dynamically

查看:51
本文介绍了如何动态更改 ResourceDictionary的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要动态更改 App.xaml 文件中的 ResourceDictionary.我尝试了以下代码:

I need to change ResourceDictionary in App.xaml file dynamically. I have tried the following code:

ResourceDictionary newRes = new ResourceDictionary();
newRes.Source = new Uri("/PsyboInventory;component/TitleBarResource.xaml", UriKind.RelativeOrAbsolute);
this.Resources.MergedDictionaries.Clear();
this.Resources.MergedDictionaries.Add(newRes);

没有错误,但主题没有改变

There is no error, but the theme not change

推荐答案

点击按钮可以编写这段代码

In button click you can write this code

var app = (App)Application.Current;app.ChangeTheme(new Uri("New Uri这里"));

var app = (App)Application.Current; app.ChangeTheme(new Uri("New Uri here"));

public partial class App : Application
    {
        public ResourceDictionary ThemeDictionary
        {
            // You could probably get it via its name with some query logic as well.
            get { return Resources.MergedDictionaries[0]; }
        }

        public void ChangeTheme(Uri uri)
        {
            ThemeDictionary.MergedDictionaries.Clear();
            ThemeDictionary.MergedDictionaries.Add(new ResourceDictionary() { Source = uri });
        } 

    }   

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary x:Name="ThemeDictionary">
                    <ResourceDictionary.MergedDictionaries>
                        <ResourceDictionary Source="/Themes/ShinyRed.xaml"/>
                    </ResourceDictionary.MergedDictionaries>
                </ResourceDictionary>
    </ResourceDictionary.MergedDictionaries>

这篇关于如何动态更改 ResourceDictionary的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆