Share via


ItemsControl.ItemTemplateSelector プロパティ

定義

各項目を表示するために使用されるテンプレートを選択するためのカスタム ロジックを取得または設定します。

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

プロパティ値

ロジックを提供し、DataTemplate を返すカスタム DataTemplateSelector オブジェクト。 既定値は、null です。

属性

次の例では、auctionItemDataTemplateSelector(クラスにAuctionItemDataTemplateSelector対応する) リソース名が の ItemsControlプロパティにItemTemplateSelector割り当てられます。

<ItemsControl 
   Template="{StaticResource ScrollTemplate}" 
   ItemsSource="{Binding Source={StaticResource items_list}}"
   ItemTemplateSelector="{StaticResource auctionItemDataTemplateSelector}" >
   <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
         <StackPanel />
      </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>
</ItemsControl>

次の例は、 メソッドのオーバーライドを使用した AuctionItemDataTemplateSelector クラスの実装を SelectTemplate 示しています。

using System.Windows;
using System.Windows.Controls;

namespace SDKSample
{
    public class AuctionItemDataTemplateSelector : DataTemplateSelector
    {
        public override DataTemplate 
            SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;

            if (element != null && item != null && item is AuctionItem)
            {
                AuctionItem auctionItem = item as AuctionItem;
                Window window = Application.Current.MainWindow;

                switch (auctionItem.SpecialFeatures)
                {
                    case SpecialFeatures.None:
                        return 
                            element.FindResource("AuctionItem_None") 
                            as DataTemplate;
                    case SpecialFeatures.Color:
                        return 
                            element.FindResource("AuctionItem_Color") 
                            as DataTemplate;
                }
            }

            return null;
        }
    }
}

Namespace SDKSample
    Public Class AuctionItemDataTemplateSelector
        Inherits DataTemplateSelector
        Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate

            Dim element As FrameworkElement = TryCast(container, FrameworkElement)

            If element isnot Nothing andalso item IsNot Nothing AndAlso TypeOf item Is AuctionItem Then

                Dim auctionItem As AuctionItem = TryCast(item, AuctionItem)

                Select Case auctionItem.SpecialFeatures
                    Case SpecialFeatures.None
                        Return TryCast(element.FindResource("AuctionItem_None"), DataTemplate)
                    Case SpecialFeatures.Color
                        Return TryCast(element.FindResource("AuctionItem_Color"), DataTemplate)
                End Select
            End If

            Return Nothing
        End Function
    End Class
End Namespace

この場合、 クラスの SelectTemplate メソッド内には、渡されたオブジェクトの プロパティの値に基づいて適切なテンプレートをSpecialFeaturesitem返すロジックがあります。 返すテンプレートは、囲んでいる Window 要素のリソース内に見つかります。

プロパティをItemTemplateSelector設定すると、 ItemsControl は、 がバインドされているコレクション内の各項目に対して の メソッドAuctionItemDataTemplateSelectorを自動的にItemsControl呼び出SelectTemplateすように指示されます。 呼び出しは、データ項目をオブジェクトとして渡します。 DataTemplateメソッドによって返される は、そのデータ項目を表示するために使用されます。

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

注釈

を使用 ItemTemplate して、データ オブジェクトの視覚化を指定します。 複数のテンプレートが定義されていて、使用するテンプレートを返すロジックを指定する場合は、このプロパティを使用します。 が設定されている場合 ItemTemplate 、このプロパティは無視されることに注意してください。

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

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

XAML 属性の使用方法

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

XAML 値

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

SelectorResourceKeyx:Key リソースとして要求されているセレクターを参照する文字列値。

依存プロパティ情報

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

適用対象

こちらもご覧ください