在运行时切换 wpf 资源字典
Posted
技术标签:
【中文标题】在运行时切换 wpf 资源字典【英文标题】:switching wpf resource dictionaries at runtime 【发布时间】:2011-01-23 18:39:01 【问题描述】:我正在尝试构建一个允许用户在运行时更改主题的 wpf 应用程序。到目前为止,我所做的是创建一个资源字典,其中定义了应用程序的所有颜色,然后我在 xaml 中绑定到这个字典。
下面是我切换资源字典的代码:
if (System.IO.File.Exists(fileName))
using (FileStream fs = new FileStream(fileName, FileMode.Open))
ResourceDictionary dic = (ResourceDictionary)XamlReader.Load(fs);
Resources.MergedDictionaries.Clear();
Resources.MergedDictionaries.Add(dic);
这段代码运行良好,我知道它正在切换资源字典,但它不会更新屏幕上已经显示的元素。我的问题是:如何刷新或重新绑定屏幕以考虑新的资源字典?
谢谢
sm
【问题讨论】:
【参考方案1】:就我而言,我只需要改变:
Resources.MergedDictionaries.Clear();
Resources.MergedDictionaries.Add(dic);
到:
Application.Current.Resources.MergedDictionaries.Clear();
Application.Current.Resources.MergedDictionaries.Add(dic);
【讨论】:
以上是关于在运行时切换 wpf 资源字典的主要内容,如果未能解决你的问题,请参考以下文章
在 VS 2010 中将控制台应用程序转换为 WPF 应用程序时遇到问题
2022-04-20 WPF面试题 WPF中StaticResource和DynamicResource之间有什么区别?
2022-04-20 WPF面试题 WPF中StaticResource和DynamicResource之间有什么区别?