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 に答える