WPF将应用程序设计为动态可蒙皮的

本文关键字:动态 应用 程序设计 WPF | 更新日期: 2023-09-27 18:06:25

我正在设计一个相当复杂的WPF应用程序,许多模块将加载Prism v4(一些用户控件将在单独的dll中,以及一些其他功能/插件)。因为我刚开始使用WPF,所以我有几个问题。

我希望所有的GUI都是"可皮肤的",用户可以点击并选择不同的配色方案,整个GUI改变用户选择的显示-主屏幕,包括所有模块(即,皮肤在运行时改变)

Q:你能推荐一些通用的方法吗?例如,我是否可以只编写Xaml而不指定任何样式(特别是不将其绑定到动态样式),并且它可以在运行时更改?然后我如何切换活动皮肤,使其影响所有加载的用户控件?

谢谢

WPF将应用程序设计为动态可蒙皮的

基本上,您所要做的就是换出资源字典。这些应该包含整个应用程序的样式和画笔等。您甚至可以将这些"皮肤"保存在外部程序集中。

你应该查看ComponentResourceKeys来"命名"外部资源,下面是一段关于如何从外部程序集加载资源的代码:

using (FileStream fs = new FileStream("MainResources.xaml", FileMode.Open))
{
    ResourceDictionary dic = (ResourceDictionary) XamlReader.Load(fs);
    Resources.MergedDictionaries.Clear();
    Resources.MergedDictionaries.Add(dic);
}
这里有一个关于codeproject
的演示