我有一个库(Styles.DLL
(,其中包含一个键控WPF Styles
的集合。
我有一个类库(Module.DLL
(,其中包含许多可以在各种应用程序之间共享的Windows
和UserControls
。我使用 Styles.DLL
中定义的键控Styles
为这些Windows
上使用的各种Controls
创建隐式Styles
,UserControls
例如 Button
或ComboBox
.
然后我有一个应用程序(App.EXE
(,其中我使用Module.DLL
中定义的Windows
。我将Styles.DLL
所需的ResourceDictionaries
合并为App.EXE
App.xaml
。
这一切都有效。
我的问题是:如何在托管应用程序中从 App.xaml 中删除字典合并并将其包含在模块中.DLL而无需将字典合并到每个窗口的资源中?
我想我正在寻找类似app.xaml
文件的东西,但要寻找类库......
我使用一种方法来清除当前词典并合并我想要的词典。实际上,"Clear"必须在方法调用时设置在内部,下面是一个示例:
void AddResourceDictionary(string source)
{
ResourceDictionary resourceDictionary = Application.LoadComponent(new Uri(source, UriKind.RelativeOrAbsolute)) as ResourceDictionary;
Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
}
实现自定义主题/皮肤/资源:
private void ThemeNameHere()
{
Application.Current.Resources.Clear();
AddResourceDictionary("Computar.Wpf;component/Style/MyStyle.xaml");
....
}
这非常有帮助!
我找不到仅使用 XAML
来解决此问题的方法。我的解决方案是使用以下代码将所需的ResourceDictionaries
合并到 Application
对象中:
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary
{
Source = new Uri(@"pack://application:,,,/Styles.DLL;component/Styles.xaml")
});
希望这将帮助有类似问题的人。