我有一个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
数据模板?它取决于我首先在我的页面上引用的资源字典吗?
对此主题的任何良好链接和其他阅读材料也表示赞赏。
答案 0 :(得分:2)
this page中的一些内容似乎与您的问题相关:
MergedDictionaries集合中的查找行为搜索 最后添加了ResourceDictionary,搜索会立即停止 找到请求的密钥。换句话说,检索逻辑来自 合并资源字典的集合是最后一次出来。
和
合并字典中的资源占用资源中的位置 查找范围就在主资源的范围之后 它们被合并到字典中。
由此我收集到主词典中定义的DataTemplate
将首先使用,然后是SeriesTwo,之后是在SeriesTwo之前/之上引用的任何内容。
另外,为什么不尝试一下,看看会发生什么?我维护一个我称之为“DumbCrapTestApp”的解决方案,当我对某些东西的工作方式感到好奇时,我会测试这样的东西。它有一个控制台应用程序,当我只需要在语言中测试一些东西,以及一个WPF和一个Silverlight应用程序,当我想在那里尝试。如果我需要一个WinForms应用程序,我只需添加一个并在那里做我的事情。我只需将我要测试的任何代码放入相关的应用程序中,将其设置为我的启动项目,然后离开。这对于搞清楚这些小事情非常有用,我甚至用它来澄清和验证答案,然后再将它发布在SO上。