DataTemplateSelector Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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) |