2012-10-15 48 views
1

是否可以对定义的类型选择使用相同的DataTemplate,即如何更改以下示例代码,以便为所有列出的类型使用相同的DataTemplate?对不同类型使用相同的DataTemplate

<DataTemplate DataType="{x:Type local:ClassA, ClassB, ...}"> 
    <StackPanel Orientation="Horizontal"> 
     <Label Content="{Binding Path=Title}"/> 
     ... 
    </StackPanel> 
</DataTemplate> 

回答

1

它并不支持开箱即用,但可以通过定义自定义MarkupExtension来完成此类操作。类似于x:Type扩展。

如果在这里,ClassA,ClassB派生自同一类,那么您应该能够在此处放置基类名称以将它们全部引用。

4

这是默认不支持,但通常我把DataTemplate的内容在UserControl或其他DataTemplate(取决于模板的复杂程度),并只写为每个类项目有3行数据模板

<UserControl x:Class="MyUserControl"> 
    <StackPanel Orientation="Horizontal"> 
     <Label Content="{Binding Path=Title}"/> 
     ... 
    </StackPanel> 
</UserControl > 


<DataTemplate DataType="{x:Type local:ClassA}"> 
    <local:MyUserControl /> 
</DataTemplate> 
<DataTemplate DataType="{x:Type local:ClassB}"> 
    <local:MyUserControl /> 
</DataTemplate> 
<DataTemplate DataType="{x:Type local:ClassC}"> 
    <local:MyUserControl /> 
</DataTemplate> 
相关问题