C# 数据模板和子数据模板

C# 数据模板和子数据模板,c#,wpf,datatemplate,itemscontrol,C#,Wpf,Datatemplate,Itemscontrol,我有一个带有WPF的项目。如何在其上使用数据模板和子数据模板 在我的项目中,我的成绩不及格 public abstract Class X public Class A: X public Class B: X public Class C: X 并在XAML文件中使用以下代码: <DataTemplate DataType="{x:Type A}"> ... </DataTemplate> <DataTemplate DataType="{x:Type B}"

我有一个带有
WPF
的项目。如何在其上使用
数据模板
和子
数据模板

在我的项目中,我的成绩不及格

public abstract Class X
public Class A: X
public Class B: X
public Class C: X
并在XAML文件中使用以下代码:

<DataTemplate DataType="{x:Type A}">
...
</DataTemplate>

<DataTemplate DataType="{x:Type B}">
...
</DataTemplate>

<DataTemplate DataType="{x:Type C}">
...
</DataTemplate>

<DataTemplate DataType="{x:Type X}" x:Key="xdatatemplate">
...
<!-- use datatemplate of A,B or C --!>
...
</DataTemplate>


<ItemsControl ItemTemplate="{StaticResource xdatatemplate}"/>

...
...
...
...

如果xdatatemplate仅根据其数据类型选择子DataTemplate,则可以如下操作:

<DataTemplate DataType="{x:Type X}" x:Key="xdatatemplate">
  <Grid>
    <ContentControl Content="{Binding}" />
    <!-- Other content -->
  <Grid>
</DataTemplate>

但是,如果需要更复杂的子数据模板选择逻辑,则应使用:


<local:MyTemplateSelector x:Key="MyTemplateSelector" />

<DataTemplate DataType="{x:Type X}" x:Key="xdatatemplate">
  <Grid>
    <ContentControl Content="{Binding}" ContentTemplateSelector="{StaticResource MyTemplateSelector}" />
    <!-- Other content -->
  <Grid>
</DataTemplate>