XAML:如何定义要在多个项目中使用的数据模板和样式

Bin*_*ier 5 wpf resources xaml

我开始使用WPF开发桌面应用程序(.net 3.5 sp1,仅限VS,尚未混合).

我就是这样,我在几个库中有一些通用的可重用组件.

我在哪里可以定义我的样式和数据模板,以便它们可以在多个项目中重复使用,因此我可以拥有一致的外观和感觉?

我看过ResourceDictionaries,但我不确定

  1. 他们是我需要的
  2. 如果它们是我需要的,我如何将它们"导入"到其他项目中并在Xaml中引用它们的内容.

谢谢,

Nir*_*Nir 10

ResourceDictionary是要走的路,您可以在项目之间复制包含资源字典的xaml文件,也可以将它们编译成您将从项目中引用的DLL.

要在同一个项目中引用字典,可以在App.xaml中添加类似这样的字典(在这种情况下,我将资源保存在ControlStyles文件夹中).

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="ControlStyles/Colors.xaml"/>
            <ResourceDictionary Source="ControlStyles/Window.xaml"/>
            <ResourceDictionary Source="ControlStyles/Button.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

如果将它们编译成另一个dll,则可以使用此语法(如果样式dll称为StyleAssembly,则"component"一词实际上是语法的一部分,而不是目录名称):

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Colors.xaml"/>
            <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Window.xaml"/>
            <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Button.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)