我正在设计一个相当复杂的WPF应用程序,许多模块将加载Prism v4(一些用户控件将在单独的dll中,以及一些其他函数/插件)。由于我刚刚开始使用WPF,我有几个问题。
我希望所有的GUI都是“skinnable”,用户可以点击并选择不同的配色方案,整个GUI将显示更改为用户选择 - 主屏幕,包括所有模块(即皮肤在运行时更改)
问:你能推荐一些一般方法吗?例如,我可以在不指定任何样式的情况下编写Xaml(具体而言,不将其绑定到动态样式)并且可以在运行时更改吗?然后我如何切换活动皮肤以便它会影响所有加载的用户控件?
由于
答案 0 :(得分:3)
您应该查看ComponentResourceKeys以“命名”外部资源, 这里有一些关于如何从所述外部程序集加载资源的代码:
using (FileStream fs = new FileStream("MainResources.xaml", FileMode.Open))
{
ResourceDictionary dic = (ResourceDictionary) XamlReader.Load(fs);
Resources.MergedDictionaries.Clear();
Resources.MergedDictionaries.Add(dic);
}