WPF无法定位资源。

4

我有一个资源文件和两个视图。这些视图使用一个资源文件。

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Dictionary1.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

如果我没有把一个视图放到另一个视图中,它将会工作。在这种情况下,我会收到以下错误信息:

无法找到资源 'dictionary1.xaml'

如何解决?


请提供更多细节,您的字典具体在哪里?将一个放在另一个里面是什么意思? - mrahhal
有一些测试的样式。我的意思是,view1 有一些像子视图的 view2。 - Nodon
2个回答

10

使用Pack Uri

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Assembly_Name;component/Dictionary1.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

1
这是唯一对我有效的方法,然而微软并没有在示例中列出它。常规路径对应用程序来说可以正常工作,但设计模式和IDE会报错。 - Michael Brown

4
如果你的项目根目录中有 Dictionary1.xaml,那么在 Dictionary1 前面删除 '/'。
<ResourceDictionary Source="Dictionary1.xaml"/>

或者您可以使用packuri,例如:
 /yourAssemblyName;component/Dictionary1.xaml

准确来说,它是“程序集名称”,而不是“命名空间”,前导斜杠似乎是可选的... - Cool Blue
这在VS2015中仍然是一个问题。当我将用户控件命名为以前导正斜杠/resourcedictionary.xaml时,它会在我的项目根文件夹中找不到资源字典文件并报错。考虑到它可以正常运行,为什么会出现这种错误信息呢? - Oystein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接