如何将PresentationFramework.Aero主题添加到ResourceDictionary

时间:2015-10-28 08:35:15

标签: c# wpf themes resourcedictionary

我想将PresentationFramework.Aero主题添加到我的ResourceDictionary中。 ResourceDictionary本身位于一个名为ProjectResources的程序集中。在这个程序集中,我为我的项目定义了所有样式。所以这个ResourceDictionary被我的项目中的几个不同的程序集使用。到目前为止,它对我定义的所有词典都很好。

现在我要添加Aero主题。但我总是得到例外:

  

未处理的类型异常   'System.Windows.Markup.XamlParseException'发生在   PresentationFramework.dll

内部例外:

  

{“无法加载文件或程序集'PresentationFramework.Aero,   文化=中立'或其依赖性之一。系统找不到   指定的文件。“:”PresentationFramework.Aero,Culture = neutral“}

ResourceDictionary的定义如下:

<Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/ImageDefinition.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/Brushes.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesLabel.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesTextBox.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesButton.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesTabControl.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesTextBox.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesBorder.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesListView.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesWindow.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesIndicator.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesSearchBox.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/ProjectResources;component/ProjectResources/Dictionaries/StylesTreeView.xaml"/>
                <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

我还添加了对PresentationFramework.Aero.dll的引用。

所以我不明白为什么它找不到定义的主题。 这个定义有什么问题?我是否错过了这个定义旁边的任何其他内容才能使用主题?

解决: 正如图伊姆在评论中所说。 您需要设置参数

  

复制Local = true

PresentationFramework.Aero DLL的

。 通过这样做,DLL将被复制到程序的根目录,它将是dll。

1 个答案:

答案 0 :(得分:0)

我认为您需要将完整的程序集信息添加到ResourceDictionary源:

<ResourceDictionary Source="/PresentationFramework.Aero,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL;component/themes/Aero.NormalColor.xaml" />