【发布时间】:2017-03-23 09:02:56
【问题描述】:
我有一个主要项目正在生成我的可执行文件。在 App.xaml 中,我定义了一些基本样式。 现在我想在其他项目中分别在其他库(dll)中使用这种样式。 我在stackoverflow中阅读了有关此问题的所有问题,但这对我不起作用。 会不会是我遇到了这个问题,因为我想使用主项目引用的库中的样式?
谢谢,亚历克斯
【问题讨论】:
标签: wpf resources styles app.xaml
我有一个主要项目正在生成我的可执行文件。在 App.xaml 中,我定义了一些基本样式。 现在我想在其他项目中分别在其他库(dll)中使用这种样式。 我在stackoverflow中阅读了有关此问题的所有问题,但这对我不起作用。 会不会是我遇到了这个问题,因为我想使用主项目引用的库中的样式?
谢谢,亚历克斯
【问题讨论】:
标签: wpf resources styles app.xaml
您应该将这些样式移动到一个单独的Resource Dictionary,供多个项目/应用程序使用。
创建资源字典并将其添加到您的项目中,然后在您的 App.xaml 中引用它:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="\shared\MyResources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
【讨论】:
创建一个新的 WPF 用户控件库,将 ResourceDictionary 添加到此项目并将您的样式从 App.xaml 移动到此 ResourceDictionary。然后,从您的 WPF 应用程序和任何其他要在其中使用这些样式的应用程序中添加对这个新项目的引用(Project->Add Reference in Visual Studio),并将ResourceDictionary 合并到App.xaml:
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/WpfControlLibrary1;component/ResourceDictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application>
显然,您需要将“WpfControlLibrary1”和“ResourceDictionary1”分别更改为新项目的实际名称和ResourceDictionary。
通过这种方式,您将常用样式移到了可以在许多不同应用程序中使用的独立程序集中。
【讨论】: