我有一个库(Styles.DLL
),其中包含一个键控的WPF Styles
的集合。
我有一个类库(Module.DLL
),其中包含许多Windows
和UserControls
,可以在各种应用程序之间共享。我使用Styles
中定义的键控Styles.DLL
为这些Styles
和Controls
上使用的各种Windows
创建隐式UserControls
,例如Button
或ComboBox
。
然后我有一个应用程序(App.EXE
),其中我使用Windows
中定义的Module.DLL
。我合并了ResourceDictionaries
Styles.DLL
中App.xaml
所需的App.EXE
。
这一切都有效。
我的问题是:如何在托管应用程序中删除从App.xaml合并的字典,并将其包含在Module.DLL中,而不必将字典合并到每个Window的资源中?
我想我正在寻找类似于app.xaml
文件但类似于库类的东西......
答案 0 :(得分:3)
我使用一种方法清除当前的词典并合并我想要的词典。实际上,必须在方法调用中设置“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");
....
}
非常有帮助!
答案 1 :(得分:1)
我找不到使用XAML
解决此问题的方法。我的解决方案是使用以下代码将所需的ResourceDictionaries
合并到代码中的Application
对象中:
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary
{
Source = new Uri(@"pack://application:,,,/Styles.DLL;component/Styles.xaml")
});
希望这可以帮助有类似问题的人。