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

时间:2015-01-05 17:58:35

标签: windows xaml windows-phone-8.1 winrt-xaml windows-8.1

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

这是一个具体的例子。

我需要在我的类库中定义一个AppColor ThemeResource键。类库中的UserControl应该能够引用和使用它。 现在,使用我的库的每个应用程序都应该能够重新定义此密钥并指定它自己的特定应用程序颜色。

我如何构建这个?

1 个答案:

答案 0 :(得分:1)

我不是100%确定这会有效,但我的第一个猜测是在类库中为generic.xaml添加资源。我假设这个类库有你的共享控件,他们将在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是什么,一个简单的谷歌搜索将会产生很多帮助。它基本上是一个保留的资源字典文件名,允许您隐式定义样式。