DataTemplateSelector DataTemplateSelector DataTemplateSelector DataTemplateSelector Class

정의

데이터 개체와 데이터 바인딩된 요소를 기반으로 하여 DataTemplate을 선택하는 방법을 제공합니다.Provides a way to choose a DataTemplate based on the data object and the data-bound element.

public ref class DataTemplateSelector
public class DataTemplateSelector
type DataTemplateSelector = class
Public Class DataTemplateSelector
상속
DataTemplateSelectorDataTemplateSelectorDataTemplateSelectorDataTemplateSelector

예제

이 예제에서는 바인딩 소스는 목록을 Task 개체입니다.In this example, the binding source is a list of Task objects. 속성 중 하나를 Task 개체가 Priority합니다.One of the properties of a Task object is Priority. 정의 하는 두 개의 데이터 템플릿이 myTaskTemplateimportantTaskTemplate입니다.There are two data templates defined, myTaskTemplate and importantTaskTemplate.

선택 하는 논리를 제공 DataTemplate 에 따라 사용 하는 Priority 값 데이터 개체의 서브 클래스를 만든 DataTemplateSelector 재정의 SelectTemplate 메서드.To supply logic to choose which DataTemplate to use based on the Priority value of the data object, create a subclass of DataTemplateSelector and override the SelectTemplate method. 다음 예제에서는 SelectTemplate 의 값을 기반으로 적절 한 템플릿을 반환 하는 논리를 제공 하는 메서드는 Priority 속성입니다.In the following example, the SelectTemplate method provides logic to return the appropriate template based on the value of the Priority property. 반환할 템플릿은 상위의 리소스에 위치한 Window 요소입니다.The template to return is found in the resources of the enveloping Window element.

using System.Windows;
using System.Windows.Controls;

namespace SDKSample
{
    public class TaskListDataTemplateSelector : DataTemplateSelector
    {
        public override DataTemplate
            SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;

            if (element != null && item != null && item is Task)
            {
                Task taskitem = item as Task;

                if (taskitem.Priority == 1)
                    return
                        element.FindResource("importantTaskTemplate") as DataTemplate;
                else
                    return
                        element.FindResource("myTaskTemplate") as DataTemplate;
            }

            return null;
        }
    }
}

Namespace SDKSample
    Public Class TaskListDataTemplateSelector
        Inherits DataTemplateSelector
        Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate

            Dim element As FrameworkElement
            element = TryCast(container, FrameworkElement)

            If element IsNot Nothing AndAlso item IsNot Nothing AndAlso TypeOf item Is Task Then

                Dim taskitem As Task = TryCast(item, Task)

                If taskitem.Priority = 1 Then
                    Return TryCast(element.FindResource("importantTaskTemplate"), DataTemplate)
                Else
                    Return TryCast(element.FindResource("myTaskTemplate"), DataTemplate)
                End If
            End If

            Return Nothing
        End Function
    End Class
End Namespace

그런 다음 TaskListDataTemplateSelector를 리소스로 선언할 수 있습니다.We can then declare the TaskListDataTemplateSelector as a resource:

<Window.Resources>
<local:TaskListDataTemplateSelector x:Key="myDataTemplateSelector"/>
</Window.Resources>

템플릿 선택기 리소스를 사용 하려면 할당에 ItemTemplateSelector 의 속성을 ListBox.To use the template selector resource, assign it to the ItemTemplateSelector property of the ListBox. ListBox 호출을 SelectTemplate 메서드의 TaskListDataTemplateSelector 각 내부 컬렉션에서 항목에 대 한 합니다.The ListBox calls the SelectTemplate method of the TaskListDataTemplateSelector for each of the items in the underlying collection. 이 호출은 데이터 개체를 항목 매개 변수로 전달합니다.The call passes the data object as the item parameter. DataTemplate 에서 반환 하는 메서드가 데이터 개체에 적용 됩니다.The DataTemplate that is returned by the method is then applied to that data object.

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplateSelector="{StaticResource myDataTemplateSelector}"
         HorizontalContentAlignment="Stretch"/>

전체 샘플을 보려면 Introduction to Data Templating Sample(데이터 템플릿 샘플 소개)을 참조하세요.For the complete sample, see Introduction to Data Templating Sample.

설명

일반적으로 DataTemplateSelector 둘 이상 있는 경우 DataTemplate 선택 하는 사용자 고유의 논리를 제공 하려면 동일한 유형의 개체에 대 한를 DataTemplate 각 데이터 개체의 속성을 기반으로 적용 합니다.Typically, you create a DataTemplateSelector when you have more than one DataTemplate for the same type of objects and you want to supply your own logic to choose a DataTemplate to apply based on the properties of each data object. 다른 개체가 여러 개 있는 경우 형식을 설정할 수는 DataType 속성에는 DataTemplate합니다.Note that if you have objects of different types you can set the DataType property on the DataTemplate. 이렇게 할 경우 만들 필요가 없습니다를 DataTemplateSelector입니다.If you do that then there is no need to create a DataTemplateSelector. 또한 동일한 형식의 있지만 다른 속성을 사용 하 여 개체에 있으면 수도 있습니다를 사용 하 여를 DataTrigger 또는 데이터 변환기입니다.Furthermore, if you have objects of the same type but with different properties, you can also consider using a DataTrigger or a data converter. 자세한 내용은 데이터 템플릿 개요를 참조하세요.For more information, see Data Templating Overview.

템플릿 선택기를 만들려면에서 상속 되는 클래스를 만듭니다 DataTemplateSelector 재정의 SelectTemplate 메서드.To create a template selector, create a class that inherits from DataTemplateSelector and override the SelectTemplate method. 클래스 정의 되 면 클래스의 인스턴스를 요소의 템플릿 선택기 속성에 할당할 수 있습니다.Once your class is defined you can assign an instance of the class to the template selector property of your element.

생성자

DataTemplateSelector() DataTemplateSelector() DataTemplateSelector() DataTemplateSelector()

DataTemplateSelector 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the DataTemplateSelector class.

메서드

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
SelectTemplate(Object, DependencyObject) SelectTemplate(Object, DependencyObject) SelectTemplate(Object, DependencyObject) SelectTemplate(Object, DependencyObject)

파생 클래스에서 재정의된 경우 사용자 지정 논리에 따라 DataTemplate을 반환합니다.When overridden in a derived class, returns a DataTemplate based on custom logic.

ToString() ToString() ToString() ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)

적용 대상