控件库的 WPF 样式



我有一个库(Styles.DLL(,其中包含一个键控WPF Styles的集合。

我有一个类库(Module.DLL(,其中包含许多可以在各种应用程序之间共享的WindowsUserControls。我使用 Styles.DLL 中定义的键控Styles为这些Windows上使用的各种Controls创建隐式StylesUserControls例如 ButtonComboBox.

然后我有一个应用程序(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")
});

希望这将帮助有类似问题的人。

相关内容

  • 没有找到相关文章

最新更新