2010-06-14 56 views
1

我有一个全球/共享的ResourceDictionary像这里面一个DataTemplate靶向于数据类型:打靶的DataTemplate只对某些观点

<DataTemplate DataType="{x:Type foo:Bar}"> 
    <!-- My DataTemplate visual tree goes here... --> 
</DataTemplate> 

这DataTemplate中代替我所有的富:我的所有视图栏类型(用户控件/视窗)。我想要做的只是将此模板应用于某些视图,并保持其他视图不受此DataTemplate影响。我可以将这个DataTemplate复制到每个视图的Resources部分,但我不想复制/粘贴DataTemplate的内容,这会导致维护头痛。

回答

2

你在这里使用的是叫做implicit data template。你正在寻求一个明确的。要做到这一点,你可以使用显式的资源键:通过Merged Dictiories内部使用适当的控制/页

<ContentPresenter ContentTemplate="{StaticResource MyStyle}" .../> 

另一个解决方案是一个资源字典(与隐式数据模板):

<DataTemplate x:Key="MyStyle" DataType="{x:Type foo:Bar}"> 
    <!-- My DataTemplate visual tree goes here... --> 
</DataTemplate> 

,后来在XAML 。

我更喜欢第一种方法,因为它更容易维护(隐式样式难以追踪)。

+0

谢谢!第二种方法为我工作。我不能使用第一种方法,因为我没有对foo的控制:创建条形图类型,它们是我隐式定位的第三方控件内部类型。 – huseyint 2010-06-14 15:13:29