【问题标题】:Referencing external xaml resources dictionary file引用外部 xaml 资源字典文件
【发布时间】:2015-03-03 13:44:15
【问题描述】:

我有一个包含多个类的项目(这是一个 dll 项目)。我添加了一个xaml 文件(我们称之为styles.xaml),我在其中声明了我最常用的样式。

我有另一个项目(让我们调用prog),在不同的解决方案中,我想使用styles.xaml 中编写的样式。

我尝试右键单击prog --> 添加现有项目,然后我选择了styles.xaml,编写了所有相关代码,并且成功了。

问题在于它将styles.xaml 文件复制到我的prog 项目目录中(因此我现在持有同一个资源文件的两个副本)。与常规的dlls 引用不同,它会一直在该目录中查找,如果不存在则不会再次复制。

在源代码控制方面,我不想保存同一个资源文件的多个副本,每个应用程序一个,并且在当前的解决方案中似乎我必须这样做。

我也尝试添加资源,然后选择该文件 - 同样的问题。

有没有办法做到这一点?

【问题讨论】:

标签: c# wpf resources styles resourcedictionary


【解决方案1】:

例如你在styles.dll中有:

 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <SolidColorBrush  x:Key="BlueColor" Color="Blue"/>
    <!-- Whatever Styles you need -->
</ResourceDictionary>

在 BlueTheme.xaml 中

然后引用它:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://siteoforigin:,,,/styles;component/BlueTheme.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

【讨论】:

  • 我试过了,但还是不行……dll和应用程序必须在同一个Visual Studio的解决方案下吗?我正在尝试使用xaml 文件,该文件位于一个解决方案内的dll 下,在作为不同解决方案一部分的项目内。这可能吗?
  • @Idanis 这就是 nuget 包派上用场的原因......您必须以某种方式加载包含样式资源字典的程序集(即,如果您在解决方案中获得对项目的引用,或者如果您有nuget-package 引用具有资源字典)编译器无法猜测程序集的位置。还请查看如何制作正确的包 uri 的参考...正如我所说的,这不是微不足道的
  • @Idanis 参考链接在您的问题下
猜你喜欢
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多