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メソッド内には、渡されたitemオブジェクトのSpecialFeaturesプロパティの値に基づいて適切なテンプレートを返すロジックがあります。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 SelectTemplateプロパティItemsControl AuctionItemDataTemplateSelectorを設定すると、がバインドされているコレクション内の各項目に対して、のメソッドが自動的に呼び出されるようになります。 ItemsControlWhen 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コンテナーはコントロールであり、 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 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 NoneNone

適用対象

こちらもご覧ください