【问题标题】:Data Template and Sub DataTemplate数据模板和子数据模板
【发布时间】:2012-09-30 05:35:09
【问题描述】:

我有一个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吗?

提前致谢。

【问题讨论】:

    标签: c# wpf datatemplate itemscontrol


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2019-06-03
      相关资源
      最近更新 更多