具有相同 DataTemplate 键的多个 ResourceDictionary?

Voo*_*ild 4 wpf xaml resourcedictionary

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

<ResourceDictionary xmlns
        .....
        >

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

        <DataTemplate x:Key="SeriesDetailedInformation">
            <StackPanel>
                ......content...
            </StackPanel>
        </DataTemplate>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

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

<ResourceDictionary xmlns=
        .....
        >
        <DataTemplate x:Key="SeriesDetailedInformation">
            <DataGrid>
                ......content...
            </DataGrid>
        </DataTemplate>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

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

任何有关该主题的良好链接和其他阅读材料也将受到赞赏。

Zan*_*son 5

此页面中的一些内容似乎与您的问题相关:

MergedDictionaries 集合中的查找行为首先搜索最后添加的 ResourceDictionary,一旦找到请求的键,搜索就会停止。换句话说,合并资源字典集合的检索逻辑是后进先出。

和:

合并字典中的资源在资源查找范围中占据一个位置,该位置紧邻它们合并到的主资源字典的范围之后。

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

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