다음을 통해 공유


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개체입니다. 기본값은 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 메서드 내에서 전달된 개체의 속성 값에 따라 적절한 템플릿을 SpecialFeatures 반환하는 논리가 item 있습니다. 반환할 템플릿은 상위의 리소스에 위치한 Window 요소입니다.

설정 하는 경우는 ItemTemplateSelector 속성을 ItemsControl 자동으로 호출 하는 합니다 의 메서드 AuctionItemDataTemplateSelector 를 컬렉션 SelectTemplate 에 있는 각 항목에 대 한 합니다 바인딩된 ItemsControl 합니다. 호출은 데이터 항목을 개체로 전달합니다. DataTemplate 그런 다음 메서드에서 반환되는 를 사용하여 해당 데이터 항목을 표시합니다.

또 다른 예제는 데이터 템플릿 개요를 참조하세요.

설명

를 사용하여 ItemTemplate 데이터 개체의 시각화를 지정합니다. 둘 이상의 템플릿이 정의되어 있고 사용할 템플릿을 반환하는 논리를 제공하려는 경우 이 속성을 사용합니다. 이 설정된 경우 ItemTemplate 이 속성은 무시됩니다.

ItemsControl 시각적 사용자 지정에 뛰어난 유연성을 제공하며 다양한 스타일 지정 및 템플릿 속성을 제공합니다. 사용 된 ItemContainerStyle 속성 또는 ItemContainerStyleSelector 데이터 항목을 포함 하는 요소의 모양에 영향을 주는 스타일을 설정 합니다. 예를 들어 ListBox, 생성 된 컨테이너는 ListBoxItem 제어;에 대 한 ComboBox, 이들은 ComboBoxItem 컨트롤입니다. 항목의 레이아웃에 영향을 주려면 사용 된 속성입니다 ItemsPanel . 컨트롤에서 그룹화 를 사용하는 경우 또는 GroupStyleSelector 속성을 사용할 GroupStyle 수 있습니다.

자세한 내용은 데이터 템플릿 개요를 참조하세요.

XAML 특성 사용

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

XAML 값

ResourceExtension , StaticResource또는 DynamicResource중 하나입니다. 스타일 자체에 시스템 리소스 또는 사용자 기본 설정 StaticResource 과 같은 잠재적인 런타임 참조에 대한 참조가 포함되지 않는 한 일반적으로 성능을 위해 스타일에 대한 참조를 사용하는 것이 좋습니다.

SelectorResourceKeyx:Key 리소스로 요청되는 선택기를 참조하는 문자열 값입니다.

종속성 속성 정보

식별자 필드 ItemTemplateSelectorProperty
메타 데이터 속성 설정 true 없음

적용 대상

추가 정보