ItemsControl.ItemTemplate プロパティ


各項目を表示するために使用する DataTemplate を取得または設定します。Gets or sets the DataTemplate used to display each item.

 property System::Windows::DataTemplate ^ ItemTemplate { System::Windows::DataTemplate ^ get(); void set(System::Windows::DataTemplate ^ value); };
public System.Windows.DataTemplate ItemTemplate { get; set; }
member this.ItemTemplate : System.Windows.DataTemplate with get, set
Public Property ItemTemplate As DataTemplate


データ オブジェクトの視覚化を指定する DataTemplateA DataTemplate that specifies the visualization of the data objects. 既定値は、null です。The default is null.


次の例は、インラインをDataTemplate作成する方法を示しています。The following example shows how to create a DataTemplate inline. DataTemplate 、各データ項目が内StackPanelの 3 TextBlockつの要素として表示されることを指定します。The DataTemplate specifies that each data item appears as three TextBlock elements within a StackPanel. この例では、データオブジェクトはという名前Taskのクラスです。In this example, the data object is a class called Task. このテンプレート内TextBlockの各要素は、 Taskクラスのプロパティにバインドされていることに注意してください。Note that each TextBlock element in this template is bound to a property of the Task class.

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}">
         <TextBlock Text="{Binding Path=TaskName}" />
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Priority}"/>

次の例に示すようにDataTemplate 、リソースセクションでを定義することは、再利用可能なオブジェクトにするのが一般的です。It is more common to define a DataTemplate in the resources section so it can be a reusable object, as in the following example:

<DataTemplate x:Key="myTaskTemplate">
    <TextBlock Text="{Binding Path=TaskName}" />
    <TextBlock Text="{Binding Path=Description}"/>
    <TextBlock Text="{Binding Path=Priority}"/>

これで、次の例のように、myTaskTemplate をリソースとして使用できるようになります。Now you can use myTaskTemplate as a resource, as in the following example:

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplate="{StaticResource myTaskTemplate}"/>

完全なサンプルについては、「Introduction to Data Templating Sample」(データ テンプレート サンプルの概要) をご覧ください。For the complete sample, see Introduction to Data Templating Sample.


データオブジェクトのItemTemplate視覚化を指定するには、を使用します。You use the ItemTemplate to specify the visualization of the data objects. がコレクションオブジェクトにバインドされていて、をDataTemplate使用して特定の表示命令を指定UIUIしない場合、各項目の結果は、基になるコレクション内の各オブジェクトの文字列表現になります。 ItemsControlIf your ItemsControl is bound to a collection object and you do not provide specific display instructions using a DataTemplate, the resulting UIUI of each item is a string representation of each object in the underlying collection.

でを設定すると、 ListBoxが次のように生成されます (を例として使用)。 UIUI ItemTemplate ItemsControlWhen you set an ItemTemplate on an ItemsControl, the UIUI is generated as follows (using the ListBox as an example):

  1. コンテンツの生成ItemsPanel中に、は、 ItemContainerGeneratorデータ項目ごとにコンテナーを作成するための要求を開始します。During content generation, the ItemsPanel initiates a request for the ItemContainerGenerator to create a container for each data item. ListBox場合、コンテナー ListBoxItemはです。For ListBox, the container is a ListBoxItem. ジェネレーターは、にコールバックItemsControlして、コンテナーを準備します。The generator calls back into the ItemsControl to prepare the container.

  2. 準備の一部として、のをItemTemplateコピー ListBoxしてのにContentTemplateするListBoxItem必要があります。Part of the preparation involves the copying of the ItemTemplate of the ListBox to be the ContentTemplate of the ListBoxItem.

  3. すべてContentControlの型と同様にControlTemplate 、のListBoxItemにはContentPresenterが含まれます。Similar to all ContentControl types, the ControlTemplate of a ListBoxItem contains a ContentPresenter. テンプレートが適用ContentPresenterされると、 ContentTemplateContentTemplateのにListBoxItemバインドされたが作成されます。When the template is applied, it creates a ContentPresenter whose ContentTemplate is bound to the ContentTemplate of the ListBoxItem.

  4. 最後に、をそれContentTemplate自体にUIUI適用し、を作成します。ContentPresenterFinally, the ContentPresenter applies that ContentTemplate to itself, and that creates the UIUI.

複数のがDataTemplate定義されていて、プログラムでを選択してDataTemplate適用するロジックを指定するItemTemplateSelector場合は、プロパティを使用します。If you have more than one DataTemplate defined and you want to supply logic to programmatically choose and apply a DataTemplate, use the ItemTemplateSelector property.

ItemsControlは、ビジュアルのカスタマイズに優れた柔軟性が提供され、多くのスタイル設定とテンプレートプロパティが提供されます。The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. ItemContainerStyleプロパティまたはプロパティを使用して、データ項目を含む要素の外観に影響を与えるスタイルをItemContainerStyleSelector設定します。Use the ItemContainerStyle property or the ItemContainerStyleSelector property to set a style to affect the appearance of the elements that contain the data items. たとえば、のListBox場合、生成されたListBoxItemコンテナーはコントロールであり、 ComboBoxItemComboBox場合はコントロールです。For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls. 項目のレイアウトに影響を与えるには、 ItemsPanelプロパティを使用します。To affect the layout of the items, use the ItemsPanel property. コントロールで grouping を使用している場合GroupStyleは、プロパティまたはGroupStyleSelectorプロパティを使用できます。If you are using grouping on your control, you can use the GroupStyle or GroupStyleSelector property.

詳しくは「 データ テンプレートの概要」をご覧ください。For more information, see Data Templating Overview.

XAML 属性の使用方法XAML Attribute Usage

<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>  


次のいずれかになります。StaticResource マークアップ拡張機能、またはDynamicresource マークアップ拡張機能One of the following: StaticResource Markup Extension, or DynamicResource Markup Extension. スタイル自体にシステムリソースやユーザー設定などの潜在的なランタイム参照への参照が含まれていない限り、通常は、StaticResource のスタイルに対するマークアップ拡張機能の参照を使用することをお勧めします。Unless the styles themselves contain references to potential run-time references such as system resources or user preferences, StaticResource Markup Extension reference to a style is usually recommended for performance.

リソースとして要求されているテンプレートを参照するX:Key ディレクティブ文字列値。x:Key Directive string value referring to the template being requested as a resource.

依存プロパティ情報Dependency Property Information

識別子フィールドIdentifier field ItemTemplateProperty
メタデータプロパティがに設定されるtrueMetadata properties set to true NoneNone