【问题标题】:Nested Resource Dictionary in separate library单独库中的嵌套资源字典
【发布时间】:2014-07-29 19:44:54
【问题描述】:

我的问题与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>

这会导致如下错误:

{"找不到资源'components/type/checkbox.xaml'。"}

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

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

【问题讨论】:

    标签: wpf .net-4.0 resourcedictionary mergeddictionaries


    【解决方案1】:

    我目前无法对此进行测试,但我希望它应该可以工作。

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

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

    您也可以根据需要使用.. 向上导航到相对目录(取决于CommonStyle.xaml 的位置),例如

    <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 的根,但是当您将其合并到Window.xaml 时,/ 现在将指代项目1 的根,随后它无法找到Components/Type/CheckBox.xaml

    通过删除/,它现在将查找相对于CommonStyle.xaml 位置的Components/Type/CheckBox.xaml,这是它能够做到的。

    【讨论】:

    • 你说的完全正确,但我还是有些困惑。项目结构中复选框的路径是 ProjectRoot/Components/Type/CheckBox,CommonStyles 位于根级别。那不是和相对路径相同的位置吗?
    • @D.. 我更新了我的答案,解释了我认为正在发生的事情
    • 现在这很有意义,我学到了一些关于合并字典的重要知识。谢谢!
    猜你喜欢
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多