Wpf 独立库中的嵌套资源字典

Wpf 独立库中的嵌套资源字典,wpf,.net-4.0,resourcedictionary,mergeddictionaries,Wpf,.net 4.0,Resourcedictionary,Mergeddictionaries,我的问题与此非常相似 我有很多项目的解决方案。有两个是相关的:一个包含WPF窗口的类库和一个包含所有WPF样式的项目 项目1中带有窗口的类库 窗口的合并词典类似于: <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/CommonStyle.xaml"/> </Reso

我的问题与此非常相似

我有很多项目的解决方案。有两个是相关的:一个包含WPF窗口的类库和一个包含所有WPF样式的项目

项目1中带有窗口的类库

窗口的合并词典类似于:

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

            //other styles here

//这里还有其他款式吗
项目2中的CommonStyle.xaml:

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/Components/Type/CheckBox.xaml"/>
</ResourceDictionary.MergedDictionaries>

这会导致以下错误:

{“找不到资源'components/type/checkbox.xaml'。”

但是,如果我在项目1中创建CommonStyle.xaml并引用项目2中相同的控件样式,那么它就可以工作


如何使最高级别的xaml文件(CommonStyle.xaml)在Project 2中工作?

我目前无法测试该文件,但我希望它能工作

在项目2中使用相对路径,而不是根路径,即

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Components/Type/CheckBox.xaml"/>
</ResourceDictionary.MergedDictionaries>
我相信当您使用根路径(以
/
开始)时,它会在您使用
CommonStyle.xaml>的项目根中查找
CheckBox.xaml
,而不是相对于
CommonStyle.xaml
的位置

附加说明

从您描述的情况来看,您似乎有以下结构:

- Project 1
  - Window.xaml
- Project 2
  - CommonStyle.xaml
  - Components
    - Type
      - CheckBox.xaml
CommonStyle.xaml
引用
/
时,它通常是指项目2的根,但是当您将其合并到
窗口中时,
/
现在将引用项目1的根,随后它无法定位
组件/类型/复选框.xaml


通过删除
/
它现在将查找
组件/类型/复选框.xaml
相对于
CommonStyle.xaml
的位置,它可以这样做。

你完全正确,但我仍然有些困惑。项目结构中复选框的路径是ProjectRoot/Components/Type/checkbox,CommonStyles位于根级别。那么这不是和相对路径相同的位置吗?@D。。我更新了我的答案,解释了我认为会发生的事情,这完全有道理,而且我学到了一些关于合并词典的重要知识。谢谢
- Project 1
  - Window.xaml
- Project 2
  - CommonStyle.xaml
  - Components
    - Type
      - CheckBox.xaml