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