多个ResourceDictionary具有相同的DataTemplate键?

时间:2011-11-11 17:30:14

标签: wpf xaml resourcedictionary

我有一个ResourceDictionary,例如(MyResourceDictionary):

<ResourceDictionary xmlns
        .....
        >

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="SeriesTwo.xaml" />
        </ResourceDictionary.MergedDictionaries>

        <DataTemplate x:Key="SeriesDetailedInformation">
            <StackPanel>
                ......content...
            </StackPanel>
        </DataTemplate>
</ResourceDictionary>

SeriesTwo.xaml看起来像这样,并且具有相同名称的DataTemplate

<ResourceDictionary xmlns=
        .....
        >
        <DataTemplate x:Key="SeriesDetailedInformation">
            <DataGrid>
                ......content...
            </DataGrid>
        </DataTemplate>
</ResourceDictionary>

在我的视图页面上,使用了哪个SeriesDetailedInformation数据模板?它取决于我首先在我的页面上引用的资源字典吗?

对此主题的任何良好链接和其他阅读材料也表示赞赏。

1 个答案:

答案 0 :(得分:2)

this page中的一些内容似乎与您的问题相关:

  

MergedDictionaries集合中的查找行为搜索   最后添加了ResourceDictionary,搜索会立即停止   找到请求的密钥。换句话说,检索逻辑来自   合并资源字典的集合是最后一次出来。

  

合并字典中的资源占用资源中的位置   查找范围就在主资源的范围之后   它们被合并到字典中。

由此我收集到主词典中定义的DataTemplate将首先使用,然后是SeriesTwo,之后是在SeriesTwo之前/之上引用的任何内容。

另外,为什么不尝试一下,看看会发生什么?我维护一个我称之为“DumbCrapTestApp”的解决方案,当我对某些东西的工作方式感到好奇时,我会测试这样的东西。它有一个控制台应用程序,当我只需要在语言中测试一些东西,以及一个WPF和一个Silverlight应用程序,当我想在那里尝试。如果我需要一个WinForms应用程序,我只需添加一个并在那里做我的事情。我只需将我要测试的任何代码放入相关的应用程序中,将其设置为我的启动项目,然后离开。这对于搞清楚这些小事情非常有用,我甚至用它来澄清和验证答案,然后再将它发布在SO上。