【问题标题】:Shared library not seeing resource dictionary共享库看不到资源字典
【发布时间】:2014-01-24 05:06:51
【问题描述】:

我有两个使用同一个类库的 wpf 解决方案(我已经编写了一个)。该库引用主项目的资源字典中的 sytles(作为静态资源)。在其中一个解决方案中,库在资源字典中找到这些静态资源,但在另一个项目中,未解析静态资源。在这两种情况下,资源字典都在主应用程序的 App.Xaml 中声明如下:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary>
                <local:AppBootstrapper x:Key="bootstrapper" />
            </ResourceDictionary>
            <ResourceDictionary Source="StoryMakerStyle.xaml" />
            <ResourceDictionary Source="Resources\GlassButton.xaml"/>
            <ResourceDictionary Source="Resources\Slider.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

StoryMakerStyle.xaml 是一个应用程序中资源字典的名称。它在另一个中称为 FlashcardsStyle.xaml。两个解决方案中的其他 2 个 ResourceDictionary 引用是相同的。

关于为什么在一个解决方案中解决对资源字典的引用而不是在另一个解决方案中的任何建议? 提前致谢

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    我假设这是 2 个项目的解决方案。您需要在引用 ResourceDictionaries 时指定哪个项目,如下所示:

    <ResourceDictionary Source="/ProjectNamespace;Resources/GlassButton.xaml"/>
    <ResourceDictionary Source="/ProjectNamespace;Resources\Slider.xaml" />
    

    【讨论】:

    • 我应该澄清我的问题:我应该说我有两个 wpf 解决方案,而不是项目。在其中一种解决方案中,库在资源字典中找到这些静态资源。两个解决方案中的 2 个 ResourceDictionary 引用是相同的。关于为什么在一个解决方案中解决对资源字典的引用而不是在另一个解决方案中的任何建议?谢谢
    • @user3226682 如果您尝试在两个完全不同的非构建解决方案之间进行引用,您可以使用 StreamReader 和 XamlReader 动态加载外部 .xaml 文件。另一种解决方案是构建一个单独的库,其中包含所需的 XAML 并以这种方式引用它。
    • 我真的不建议在两个单独的解决方案之间进行引用。如果每个项目中只有一个项目并且它们彼此相关,我会将它们组合成一个项目。如果这不是真的,那么我会亲自将文件复制到每个解决方案中,或者在单独的文本编辑器中处理它,让两个解决方案都从外部加载 XAML。
    • 只创建一个解决方案(并将我想从事的项目设置为启动项目)似乎已经解决了这个问题。感谢cmets。我应该澄清一下,我刚刚将第二个解决方案的项目添加为第一个解决方案中的另一个项目。只做一个项目对我来说是行不通的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2015-10-27
    相关资源
    最近更新 更多