代码之家  ›  专栏  ›  技术社区  ›  scobi

为什么Generic.xaml中的合并词典需要绝对uri?

  •  10
  • scobi  · 技术社区  · 15 年前

    考虑一个文件| WPF应用程序的新项目,它包含:

    1. 一个名为CustomControl1的新自定义控件
    2. 两个名为Dictionary1和Dictionary2的新资源字典

    <!--Generic.xaml-->
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="pack://application:,,,/Themes/Dictionary1.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    
    <!--Dictionary1.xaml-->
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Dictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    

    然后,将CustomControl1的实例添加到主窗口的网格中(这一部分是再现问题的必要部分。项目总是编译得很好-只有在运行时才会显示问题,并且必须引用字典。)

    我的问题是: generic.xaml在相对URI解析方面有什么特别之处,为什么?

    2 回复  |  直到 14 年前
        1
  •  11
  •   Ilya Serbis    13 年前

    对不起,因为我没有能力写评论,所以我把这个作为一个答案。

    我也有同样的情况,一切都很好。我不需要把pack://application“在Generic.xaml的路径中。但仅当程序集的输出类型为“Windows应用程序”时。 为了 “类库” 我需要将程序集名称添加到路径( Source="/ClassLibarayAssemblyName;component/Themes/Dictionary1.xaml"

        2
  •  1
  •   Alex Paven    14 年前

    猜测一下:generic.xaml也需要从外部程序集进行访问,因此这是一种确保可以使用绝对uri从任何地方找到资源的方法。就像我说的,这只是暗中捅一刀,不确定。