ItemsControl.ItemTemplateSelector Property

Definition

각 항목을 표시하는 데 사용되는 템플릿을 선택하기 위한 사용자 지정 논리를 가져오거나 설정합니다.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

Property Value

DataTemplateSelector

논리를 제공하고 DataTemplateSelector 을 반환하는 사용자 지정 DataTemplate개체입니다.A custom DataTemplateSelector object that provides logic and returns a DataTemplate. 기본값은 null입니다.The default is null.

Attributes

Examples

다음 예제에서는 AuctionItemDataTemplateSelector 클래스에 해당 하는 auctionItemDataTemplateSelector 리소스 이름이 ItemsControlItemTemplateSelector 속성에 할당 됩니다.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>

다음 예제에서는 SelectTemplate 메서드를 재정의 하는 AuctionItemDataTemplateSelector 클래스의 구현을 보여 줍니다.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 속성을 설정 하는 경우 ItemsControl 바인딩되는 컬렉션의 각 항목에 대해 AuctionItemDataTemplateSelectorSelectTemplate 메서드를 자동으로 호출 하도록 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.

Remarks

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 제어;에 대 한 ComboBox, 이들은 ComboBoxItem 컨트롤입니다.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

Applies to

See also