0

我有一个项目WPF。我该如何使用Data Template和使用Data Template它。

我的项目中有以下课程。

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}"/>

我想为我的 ItemsControl 的 Itemtemplate 使用 xdatatemplate。ItemsSource 项目属于 A、B 或 C 类型。A、B 和 C 类型之间只有部分数据模板不同。如何在 X DataTemplate 上使用 A、B 和 C 子 DataTemplate?

我可以ItemTemplateSelector用于此目的吗?

提前致谢。

4

1 回答 1

1

如果 xdatatemplate 仅通过其 DataType 选择子 DataTemplate,那么您可以这样做:

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

但是,如果您需要更复杂的子 DataTemplate 选择逻辑,则应使用ContentTemplateSelector

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

<DataTemplate DataType="{x:Type X}" x:Key="xdatatemplate">
  <Grid>
    <ContentControl Content="{Binding}" ContentTemplateSelector="{StaticResource MyTemplateSelector}" />
    <!-- Other content -->
  <Grid>
</DataTemplate>
于 2012-09-30T06:53:20.140 回答