ItemsControl.ItemTemplateSelector ItemsControl.ItemTemplateSelector ItemsControl.ItemTemplateSelector ItemsControl.ItemTemplateSelector Property

定義

各項目の表示に使用するテンプレートを選択するためのカスタム ロジックを取得または設定します。Gets or sets the custom logic for choosing a template used to display each item.

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; }
member this.ItemTemplateSelector : System.Windows.Controls.DataTemplateSelector with get, set
Public Property ItemTemplateSelector As DataTemplateSelector

プロパティ値

ロジックを提供し、DataTemplateSelector を返すカスタム DataTemplate オブジェクト。A custom DataTemplateSelector object that provides logic and returns a DataTemplate. 既定値は、null です。The default is null.

次の例では、auctionItemDataTemplateSelectorリソース名 (に対応する、AuctionItemDataTemplateSelectorクラス) に割り当てられている、ItemTemplateSelectorのプロパティ、ItemsControlします。In the following example, the auctionItemDataTemplateSelector resource name (corresponding to an AuctionItemDataTemplateSelector class) is assigned to the ItemTemplateSelector property of the ItemsControl.

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

次の例の実装を示しています、AuctionItemDataTemplateSelectorクラスのオーバーライドを含む、SelectTemplateメソッド。The following example shows the implementation of the AuctionItemDataTemplateSelector class with an override of the SelectTemplate method:

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渡されたオブジェクト。In this case, within the SelectTemplate method of the class, there is logic to return the appropriate template based on the value of the SpecialFeatures property of the item object passed. 返すテンプレートは、エンベロープのリソースで見つかったWindow要素。The template to return is found in the resources of the enveloping Window element.

設定すると、ItemTemplateSelectorプロパティ、ItemsControlは自動的に呼び出しに送られます、SelectTemplateメソッドのAuctionItemDataTemplateSelectorをコレクション内の項目ごと、ItemsControlがバインドされています。When you set the ItemTemplateSelector property, the ItemsControl is directed to automatically call the SelectTemplate method of AuctionItemDataTemplateSelector for each of the items in the collection to which the ItemsControl is bound. この呼び出しは、オブジェクトとしてデータ項目を渡します。The call passes the data item as an object. DataTemplateによって返されるデータ項目を表示する、メソッドを使用しています。The DataTemplate that is returned by the method is then used to display that data item.

別の例では、次を参照してください。データ テンプレートの概要します。For another example, see Data Templating Overview.

注釈

使用する、ItemTemplateデータ オブジェクトの視覚化を指定します。You use the ItemTemplate to specify the visualization of the data objects. している場合は、複数のテンプレートが定義されているを使用するテンプレートを返すロジックを提供するために、このプロパティを使用します。If you have more than one template defined and want to supply logic to return a template to use, then you use this property. 場合、このプロパティは無視されることに注意してください。ItemTemplate設定されます。Note that this property is ignored if ItemTemplate is set.

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制御のComboBoxComboBoxItemコントロール。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. 使用することができます、コントロールをグループ化を使用している場合、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 ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

XAML 値XAML Values

ResourceExtensionResourceExtension
次のいずれか: StaticResource、またはDynamicResourceします。One of the following: StaticResource, or DynamicResource. スタイル自体は、システム リソースまたはユーザーの設定などの潜在的な実行時参照への参照を含めることがない限りStaticResourceスタイルへの参照は、通常、パフォーマンスの推奨します。Unless the styles themselves contain references to potential run-time references such as system resources or user preferences, StaticResource reference to a style is usually recommended for performance.

SelectorResourceKeySelectorResourceKey
x:Key リソースとして要求されるセレクターを参照する文字列値です。x:Key string value referring to the selector being requested as a resource.

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

識別子フィールドです。Identifier field ItemTemplateSelectorProperty
メタデータのプロパティを設定するには trueMetadata properties set to true なしNone

適用対象

こちらもご覧ください