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

논리를 제공하고 DataTemplateSelector 을 반환하는 사용자 지정 DataTemplate개체입니다. 기본값은 null입니다.

특성

예제

다음 예제에서는 클래스에 auctionItemDataTemplateSelector 해당하는 AuctionItemDataTemplateSelector 리소스 이름이 해당 속성ItemsControlItemTemplateSelector 할당됩니다.

<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 하면 바인딩된 컬렉션의 AuctionItemDataTemplateSelector 각 항목에 대한 메서드를 자동으로 호출 SelectTemplate 하도록 ItemsControl 지시 ItemsControl 됩니다. 호출은 데이터 항목을 개체로 전달합니다. DataTemplate 그런 다음 메서드에서 반환되는 항목을 사용하여 해당 데이터 항목을 표시합니다.

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

설명

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

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

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

XAML 특성 사용

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

XAML 값

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

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

종속성 속성 정보

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

적용 대상

추가 정보