Bagikan melalui


DataTemplateSelector Kelas

Definisi

Menyediakan cara untuk memilih DataTemplate berdasarkan objek data dan elemen terikat data.

public ref class DataTemplateSelector
public class DataTemplateSelector
type DataTemplateSelector = class
Public Class DataTemplateSelector
Warisan
DataTemplateSelector

Contoh

Dalam contoh ini, sumber pengikatan adalah daftar Task objek. Salah satu properti Task objek adalah Priority. Ada dua templat data yang ditentukan, myTaskTemplate dan importantTaskTemplate.

Untuk menyediakan logika untuk memilih DataTemplate mana yang akan digunakan berdasarkan nilai Priority objek data, buat subkelas DataTemplateSelector dan ambil alih metode SelectTemplate. Dalam contoh berikut, metode SelectTemplate menyediakan logika untuk mengembalikan templat yang sesuai berdasarkan nilai properti Priority. Templat yang akan dikembalikan ditemukan dalam sumber daya elemen Window yang menyelimuti.

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

Kita kemudian dapat mendeklarasikan TaskListDataTemplateSelector sebagai sumber daya:

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

Untuk menggunakan sumber daya selektor template, tetapkan pada properti ItemTemplateSelector dari ListBox. ListBox memanggil metode SelectTemplate dari TaskListDataTemplateSelector untuk setiap item dalam koleksi dasar. Panggilan meneruskan objek data sebagai parameter item. DataTemplate yang dikembalikan oleh metode kemudian diterapkan ke objek data tersebut.

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

Untuk sampel lengkapnya, lihat Pengenalan Sampel Templat Data.

Keterangan

Biasanya, Anda membuat DataTemplateSelector ketika Anda memiliki lebih dari satu DataTemplate untuk jenis objek yang sama dan Anda ingin menyediakan logika Anda sendiri untuk memilih DataTemplate untuk diterapkan berdasarkan properti setiap objek data. Perhatikan bahwa jika Anda memiliki objek dari berbagai jenis, Anda dapat mengatur DataType properti pada DataTemplate. Jika Anda melakukan itu maka tidak perlu membuat DataTemplateSelector. Selain itu, jika Anda memiliki objek dengan jenis yang sama tetapi dengan properti yang berbeda, Anda juga dapat mempertimbangkan untuk menggunakan DataTrigger atau pengonversi data. Untuk informasi selengkapnya, lihat Gambaran Umum Templat Data.

Untuk membuat pemilih templat, buat kelas yang mewarisi dan DataTemplateSelector mengambil alih SelectTemplate metode . Setelah kelas ditentukan, Anda dapat menetapkan instans kelas ke properti pemilih templat elemen Anda.

Konstruktor

Nama Deskripsi
DataTemplateSelector()

Menginisialisasi instans baru dari kelas DataTemplateSelector.

Metode

Nama Deskripsi
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
SelectTemplate(Object, DependencyObject)

Saat ditimpa di kelas turunan DataTemplate , mengembalikan berdasarkan logika kustom.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk