我的问题与此one
非常相似我有一个包含许多项目的解决方案。两个是相关的:一个包含WPF窗口的类库和一个包含所有WPF样式的项目。
带有项目1中窗口的类库
Window的合并字典类似于:
<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>
导致错误,如:
{“无法找到资源'组件/类型/ checkbox.xaml'。”}
但是,如果我在Project 1中创建一个CommonStyle.xaml并从Project 2引用相同的控件样式,那么它可以工作。
如何从项目2中创建最高级别的xaml文件(CommonStyle.xaml)?
答案 0 :(得分:3)
我目前无法对此进行测试,但我希望它能够正常运行。
而不是根路径,使用项目2中的相对路径,即
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Components/Type/CheckBox.xaml"/>
</ResourceDictionary.MergedDictionaries>
您也可以根据需要使用..
导航到相对目录(取决于CommonStyle.xaml
的位置),例如
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../Components/Type/CheckBox.xaml"/>
</ResourceDictionary.MergedDictionaries>
我相信当您使用带根路径(从/
开始)时,它会在您使用CheckBox.xaml
的项目根目录中查找CommonStyle.xaml
,而不是相对于CommonStyle.xaml
的位置- Project 1
- Window.xaml
- Project 2
- CommonStyle.xaml
- Components
- Type
- CheckBox.xaml
。
附加说明
根据您的描述,您似乎有以下结构:
CommonStyle.xaml
当/
引用Window.xaml
时,它通常是指项目2的根,但是当您将其合并到/
时,Components/Type/CheckBox.xaml
现在将引用根项目1,随后无法找到/
。
通过删除Components/Type/CheckBox.xaml
,它现在会查找CommonStyle.xaml
相对于其能够执行的{{1}}位置。