DataTemplateSelector 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
데이터 개체 및 데이터 바인딩된 요소를 기반으로 선택할 DataTemplate 수 있는 방법을 제공합니다.
public ref class DataTemplateSelector
public class DataTemplateSelector
type DataTemplateSelector = class
Public Class DataTemplateSelector
- 상속
-
DataTemplateSelector
예제
이 예제에서 바인딩 소스는 개체 목록 Task 입니다. 개체의 Task 속성 중 하나는 .입니다 Priority. 두 개의 데이터 템플릿이 정의 myTaskTemplate 되어 있습니다 importantTaskTemplate.
데이터 개체의 DataTemplate 값을 기준으로 사용할 Priority를 선택하는 논리를 제공하기 위해, DataTemplateSelector의 서브클래스를 만들고 SelectTemplate 메서드를 재정의하십시오. 다음 예제에서는 Priority 속성의 값에 따라 적절한 템플릿을 반환하는 논리를 제공하는 메서드인 SelectTemplate 메서드를 설명합니다. 반환할 템플릿은 포괄하는 Window 요소의 리소스에서 찾을 수 있습니다.
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를 리소스로 선언할 수 있습니다.
<Window.Resources>
<local:TaskListDataTemplateSelector x:Key="myDataTemplateSelector"/>
</Window.Resources>
템플릿 선택기 리소스를 사용하려면, ItemTemplateSelector 속성에 할당하십시오.
ListBox는 기본 컬렉션의 각 항목에 대해 SelectTemplate의 TaskListDataTemplateSelector 메서드를 호출합니다. 이 호출은 데이터 개체를 항목 매개 변수로 전달합니다. 메서드에 의해 반환된 DataTemplate가 데이터 객체에 적용됩니다.
<ListBox Width="400" Margin="10"
ItemsSource="{Binding Source={StaticResource myTodoList}}"
ItemTemplateSelector="{StaticResource myDataTemplateSelector}"
HorizontalContentAlignment="Stretch"/>
전체 샘플을 보려면 데이터 템플릿 샘플 소개를 참조하세요.
설명
일반적으로 동일한 형식의 개체에 대해 둘 DataTemplate 이상의 개체가 있고 각 데이터 개체의 속성에 따라 적용할 항목을 선택하는 DataTemplate 고유한 논리를 제공하려는 경우를 만듭니 DataTemplateSelector 다. 다른 형식의 개체가 있는 경우 에 속성을 DataTemplate설정할 DataType 수 있습니다. 이렇게 하면 .를 DataTemplateSelector만들 필요가 없습니다. 또한 형식이 같지만 속성이 다른 개체가 있는 경우 데이터 변환기 또는 데이터 변환기를 사용하는 DataTrigger 것도 고려할 수 있습니다. 자세한 내용은 데이터 템플릿 개요를 참조하세요.
템플릿 선택기를 만들려면 상속되는 클래스를 DataTemplateSelector 만들고 메서드를 재정의합니다 SelectTemplate . 클래스가 정의되면 요소의 템플릿 선택기 속성에 클래스 인스턴스를 할당할 수 있습니다.
생성자
| Name | Description |
|---|---|
| DataTemplateSelector() |
DataTemplateSelector 클래스의 새 인스턴스를 초기화합니다. |
메서드
| Name | Description |
|---|---|
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
| GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| SelectTemplate(Object, DependencyObject) |
파생 클래스에서 재정의되는 경우 사용자 지정 논리를 기반으로 반환 DataTemplate 합니다. |
| ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |