我如何在我的 class 库中定义我自己的主题资源键并在应用程序上覆盖它们?

How can i define my own Theme Resource Keys inside my class library and override them on the App?

我想在我的 class 库中定义自定义 ThemeResource 键并在我的 UserControls 中使用它 class 图书馆。 然后我需要我的应用程序覆盖这些值。

这是一个具体的例子。

我需要在我的 class 库中定义一个 AppColor ThemeResource 键。 class 库中的 UserControls 应该可以引用和使用它。 现在每个使用我的库的应用程序都应该能够重新定义这个键并指定它自己的特定应用程序颜色。

我该如何构造它?

我不是 100% 确定这会起作用,但我的第一个猜测是将资源添加到 class 库中的 generic.xaml。我假设这个 class 库有你的共享控件,它们将在 generic.xaml.

中初始化它们的基本样式

generic.xaml 中,添加这样的主题资源:

<ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="Default">
            <SolidColorBrush x:Key="MyAppColor" Color="Orange" />
        </ResourceDictionary>
</ResourceDictionary.ThemeDictionaryies>

<Style TargetType="Controls:MyControl">
    <Setter Property="Background" Value="{ThemeResource MyAppColor}"/>
</Style>

任何引用您的 DLL 的应用程序都能够以相同的方式修改其词典中的 MyAppColor 资源。例如,您可以将其添加到 App.xaml

<ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="Default">
            <SolidColorBrush x:Key="MyAppColor" Color="Green" />
        </ResourceDictionary>
</ResourceDictionary.ThemeDictionaryies>

如果您不知道 generic.xaml 是什么,简单的 Google 搜索将提供很多帮助。它基本上是一个保留的资源字典文件名,允许您隐式定义您的样式。