我在像这样的全局/共享ResourceDictionary中有一个DataTemplate,它定位一个DataType:
<DataTemplate DataType="{x:Type foo:Bar}">
<!-- My DataTemplate visual tree goes here... -->
</DataTemplate>
这个DataTemplate取代了我所有的foo:我所有视图上的条形类型(UserControls / Windows)。我想要做的是将此模板仅应用于某些视图,保持其他视图不受此DataTemplate的影响。我可以将这个DataTemplate复制到每个视图的Resources部分,但我不想复制/粘贴DataTemplate的内容,这会导致维护问题。
答案 0 :(得分:2)
您在此处使用的内容称为implicit data template。你要求一个明确的。要实现此目的,您可以使用显式资源键:
<DataTemplate x:Key="MyStyle" DataType="{x:Type foo:Bar}">
<!-- My DataTemplate visual tree goes here... -->
</DataTemplate>
后来在xaml:
<ContentPresenter ContentTemplate="{StaticResource MyStyle}" .../>
另一种解决方案是在适当的控制/页面内通过Merged Dictiories使用一个资源字典(带有隐式数据模板)。
我更喜欢第一种方法,因为它更容易维护(隐式样式更难以跟踪)。