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

プロパティ値

DataTemplateSelector

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

属性

次の例では、 auctionItemDataTemplateSelector (クラスに AuctionItemDataTemplateSelector 対応する) リソース名が ItemTemplateSelector ItemsControl.

<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には、渡されたオブジェクトのプロパティの値に基づいて適切なテンプレートをSpecialFeatures``item返すロジックがあります。 返すテンプレートは、囲んでいる Window 要素のリソース内に見つかります。

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

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

注釈

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

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

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

XAML 属性の使用方法

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

XAML 値

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

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

依存プロパティ情報

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

適用対象

こちらもご覧ください