1

私の状況を説明させてください。

Shape という基本クラスと、Triangle、Square などの具象クラスがいくつかあります。

いくつかのデータ テンプレートがあります。

私はただ1つのオブジェクトを構築しています。したがって、ItemControl コントロールは使用せず、グリッドのような通常のパネルを使用して、それぞれのデータ テンプレートを表示したいと思います (DataContext には具象アイテムがあります)。

これを行う唯一の方法は、ItemsControl を使用することですか? または、別の方法があります..コレクションではなく1つのアイテムを使用しているだけで、正しいテンプレートを表示しているためです。

4

2 に答える 2

3

DataTemplatesだけでなく、はるかに多くの用途で使用されていますItemsControls

これらは、ビジュアル ツリーでオブジェクトを描画する方法を WPF に指示するために使用されます。たとえば、Userクラス オブジェクトを に貼り付ける場合VisualTree、aを使用して、そのオブジェクトDataTemplateの描画方法を WPF に伝えることができます。User

ItemsSourceこれらはまたはプロパティを持つコントロールで最も頻繁に使用されますContent。これは、データ オブジェクトを に挿入する最も一般的な方法であるためVisualTreeです。

VisualTree に 1 つのデータ項目のみを挿入する特定のケースでは、ContentControl

<ContentControl Content="{Binding MyDataObject}" />

WPF に描画方法を指示するには、プロパティをMyDataObject使用して、ContentTemplateDataTemplate

<ContentControl Content="{Binding MyDataObject}" 
                ContentTemplate="{StaticResource MyDataTemplate}" />

DataTemplateまたは、特定のテンプレートを使用して特定のタイプのオブジェクトを描画するように WPF に指示する暗黙の定義を定義します。

<DataTemplate DataType="{x:Type local:MyDataObject}">
    <!-- Tell WPF how to draw MyDataObject here -->
</DataTemplate>
于 2012-06-27T18:37:28.683 に答える
1

アイテムのタイプに基づいて選択されたデータ テンプレートを使用して単一のアイテムを表示する場合は、ContentControlまたはその派生クラスのいずれかを使用する必要があります。

于 2012-06-27T18:37:02.607 に答える