Wpf 独立库中的嵌套资源字典
我的问题与此非常相似 我有很多项目的解决方案。有两个是相关的:一个包含WPF窗口的类库和一个包含所有WPF样式的项目 项目1中带有窗口的类库 窗口的合并词典类似于: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
<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