我有多个类库,每个类都包含自己的自定义用户控件。我想有一个单独的公共库,其中包含我的项目中使用的所有资源字典,以便我可以从一个位置更改我项目中使用的所有控件的背景颜色。
从中央位置设置所有这些控件的最佳方式是什么?
答案 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?!)将无法在设计时解决它们。