4

定義されたタイプの選択に同じ DataTemplate を使用することは可能ですか?つまり、リストされているすべてのタイプに同じ DataTemplate が使用されるように、次のサンプル コードを変更する方法はありますか?

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

2 に答える 2

10

これはデフォルトではサポートされていませんが、通常は (テンプレートの複雑さに応じて) の内容を入れDataTemplateたりUserControlDataTemplateクラス項目ごとに 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>
于 2012-10-15T16:41:34.040 に答える
1

そのままではサポートされていませんが、カスタム MarkupExtension を定義することで、このようなことを行うことができます。x:Type 拡張に似ています。

ここで、ClassA、ClassB が同じクラスから派生している場合は、ここに基本クラス名を入力してそれらすべてを参照できるはずです。

于 2012-10-15T16:16:13.020 に答える