Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net pack://application:,,,/ResourceFile.xaml永远不起作用_.net_Wpf_Resourcedictionary - Fatal编程技术网

.net pack://application:,,,/ResourceFile.xaml永远不起作用

.net pack://application:,,,/ResourceFile.xaml永远不起作用,.net,wpf,resourcedictionary,.net,Wpf,Resourcedictionary,我从来没有能够让这种参考格式的资源字典工作。我错过了什么 情景: 创建并组装包含一些用户控件的组件。 在根目录下,您已经说过文件{root}/Themes/ColorThemes.xaml ColorThemes.xaml文件的生成操作设置为。 然后在下面的xaml文件中,假设{root}/Controls/ButtonStyles/Themes/ButtonThemes.xaml(注意路径只是一个示例) 在这个文件中,我有以下代码: <ResourceDictionary.MergedD

我从来没有能够让这种参考格式的资源字典工作。我错过了什么

情景:

创建并组装包含一些用户控件的组件。
在根目录下,您已经说过文件{root}/Themes/ColorThemes.xaml
ColorThemes.xaml文件的生成操作设置为。
然后在下面的xaml文件中,假设{root}/Controls/ButtonStyles/Themes/ButtonThemes.xaml(注意路径只是一个示例) 在这个文件中,我有以下代码:

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/Themes/ColorThemes.xaml"/>
</ResourceDictionary.MergedDictionaries>

就州而言,这应该是可行的(据我所知),而当我在设计器中时,它似乎很好(所有颜色加载等),但是当我去编译我的应用程序并运行它时,我得到了这个错误{“找不到资源'themes/colorthemes.xaml.”,这很奇怪,因为它似乎在构建器中使用得很好。所以我有点困惑,因为它似乎与文档不符。
如果有人能向我解释一下我遗漏了什么:)

注意:如果我将以前的代码更改为

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="../../../Themes/ColorThemes.xaml"/>
</ResourceDictionary.MergedDictionaries>

但对于cleanese来说,它工作得很好pack://application: .

试试:

pack://application:,,,/YOURNAMESPACEHERE/ColorThemes.xaml
例如


无法重现您的问题。所有这些变化都很好:

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/Themes/ColorThemes.xaml"/>
    <ResourceDictionary Source="/Themes/ColorThemes.xaml"/>
    <ResourceDictionary Source="../../Themes/ColorThemes.xaml"/>
</ResourceDictionary.MergedDictionaries>

请注意
pack://application:,,,
是可选的,
/
引用当前程序集的根


请提供再现您的问题的完整示例。

这是由项目的命名空间习惯造成的。这个问题似乎是由同一个程序集中不同的名称空间引起的。我遇到了同样的事情,这就是为什么我第一个想到的就是这个问题。pack://application:,,,/YOURASSEMBLYNAME;组件/Themes/ColorThemes.xaml。Uri MSDN:。在Themes/Generic.xaml中合并字典或alle-cc-xaml也是很常见的。我通常将我的cc拆分,并将其命名为CcName.Generic.xaml。但那正是我的口味。。
<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="pack://application:,,,/Themes/ColorThemes.xaml"/>
    <ResourceDictionary Source="/Themes/ColorThemes.xaml"/>
    <ResourceDictionary Source="../../Themes/ColorThemes.xaml"/>
</ResourceDictionary.MergedDictionaries>