如何动态更改 ResourceDictionary [英] How to change ResourceDictionary Dynamically
本文介绍了如何动态更改 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屋!
查看全文