Share via


ItemsControl.ItemTemplate プロパティ

定義

各項目を表示するために使用される DataTemplate を取得または設定します。

public:
 property System::Windows::DataTemplate ^ ItemTemplate { System::Windows::DataTemplate ^ get(); void set(System::Windows::DataTemplate ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.DataTemplate ItemTemplate { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemTemplate : System.Windows.DataTemplate with get, set
Public Property ItemTemplate As DataTemplate

プロパティ値

データ オブジェクトの視覚化を指定する DataTemplate。 既定値は、null です。

属性

次の例は、インラインを作成する方法を DataTemplate 示しています。 はDataTemplate、各データ項目が 内StackPanelの 3 つのTextBlock要素として表示されることを指定します。 この例では、データ オブジェクトは という Taskクラスです。 このテンプレートの各 TextBlock 要素は、 クラスの プロパティにバインドされていることに Task 注意してください。

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

次の例のように、再利用可能なオブジェクトにできるように、resources セクションで を定義 DataTemplate する方が一般的です。

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

これで、次の例のように、myTaskTemplate をリソースとして使用できるようになります。

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

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

注釈

を使用 ItemTemplate して、データ オブジェクトの視覚化を指定します。 ItemsControlがコレクション オブジェクトにバインドされていて、 を使用して特定の表示命令をDataTemplate指定しない場合、各項目の結果の UI は、基になるコレクション内の各オブジェクトの文字列表現になります。

を にItemsControl設定ItemTemplateすると、UI は次のように生成されます (例として をListBox使用)。

  1. コンテンツの生成中に、 は ItemsPanel 、各データ項目の ItemContainerGenerator コンテナーを作成するための 要求を開始します。 の場合 ListBox、コンテナーは です ListBoxItem。 ジェネレーターは を呼び出して ItemsControl コンテナーを準備します。

  2. 準備の一部には、 の ItemTemplateListBoxContentTemplateListBoxItemコピーが含まれます。

  3. すべての ContentControl 型と同様に、 ControlTemplateListBoxItem には が ContentPresenter含まれています。 テンプレートを適用すると、 の にContentTemplateバインドされた を作成ContentTemplateContentPresenterしますListBoxItem

  4. 最後に、 ContentPresenter はそれ ContentTemplate 自体に適用され、UI が作成されます。

複数 DataTemplate のが定義されていて、プログラムで を選択して適用 DataTemplateするロジックを指定する場合は、 プロパティを ItemTemplateSelector 使用します。

ItemsControl 、視覚的なカスタマイズに優れた柔軟性を提供し、多くのスタイル設定とテンプレートプロパティを提供します。 プロパティまたは プロパティをItemContainerStyleItemContainerStyleSelector使用して、データ項目を含む要素の外観に影響を与えるスタイルを設定します。 たとえば、 の場合 ListBox、生成されたコンテナーは ListBoxItem コントロールです。の場合 ComboBoxはコントロールです ComboBoxItem 。 項目のレイアウトに影響を与えるには、 プロパティを使用します ItemsPanel 。 コントロールでグループ化を使用している場合は、 または GroupStyleSelector プロパティをGroupStyle使用できます。

詳細については、「 データ テンプレートの概要」を参照してください。

XAML 属性の使用方法

<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>

XAML 値

ResourceExtensionStaticResource Markup Extension または DynamicResource Markup Extension のいずれか。 スタイル自体にシステム リソースやユーザー設定などの潜在的な実行時参照への参照が含まれている場合を除き、通常、パフォーマンスのためにスタイルへの StaticResource Markup Extension 参照をお勧めします。

リソースとして要求されるテンプレートを参照する TemplateResourceKeyx:Key ディレクティブ文字列値。

依存プロパティ情報

識別子フィールド ItemTemplateProperty
に設定されたメタデータ プロパティ true なし

適用対象

こちらもご覧ください