我应该如何将样式应用于多个类库?

时间:2016-05-04 10:54:31

标签: c# wpf xaml

我有多个类库,每个类都包含自己的自定义用户控件。我想有一个单独的公共库,其中包含我的项目中使用的所有资源字典,以便我可以从一个位置更改我项目中使用的所有控件的背景颜色。

从中央位置设置所有这些控件的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

我所做的是在一个特定项目中拥有资源字典文件,然后我需要引用它们的任何地方我使用“pack”URI语法合并它们。因此在用户控件中,例如: -

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/SomeApplication.Common.UI;component/Themes/Metro/colors.xaml" />
            <ResourceDictionary Source="pack://application:,,,/SomeApplication.Common.UI;component/Themes/Metro/buttonstyles.xaml" />
            <ResourceDictionary Source="pack://application:,,,/SomeApplication.Common.UI;component/Themes/Metro/fonts.xaml" />
        </ResourceDictionary.MergedDictionaries>

        <!-- Any "local" user control styles go here -->
    </ResourceDictionary>
</UserControl.Resources>

“pack”语法采用以下形式: -

  

pack:// application:,,, / [assembly name]; component / [resource path&amp;文件名]“

在上面的示例中,“SomeApplication.Common.UI”是我的项目/程序集的名称,其中可以找到资源文件;这些文件位于名为“\ Themes \ Metro”的项目子文件夹中。带有用户控件的项目显然需要引用包含资源的项目/程序集!

此外,您实际上不需要合并各个资源文件以使其工作。该应用程序仍然可以编译和运行,只是你会在XAML编辑器中的样式名称下得到曲线,因为Visual Studio(或者它是Resharper?!)将无法在设计时解决它们。

相关问题