ItemsControl.ItemTemplateSelector Properti
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.
Mendapatkan atau mengatur logika kustom untuk memilih templat yang digunakan untuk menampilkan setiap item.
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
Nilai Properti
Objek kustom DataTemplateSelector yang menyediakan logika dan mengembalikan DataTemplate. Default adalah null
.
- Atribut
Contoh
Dalam contoh berikut, auctionItemDataTemplateSelector
nama sumber daya (sesuai dengan AuctionItemDataTemplateSelector
kelas) ditetapkan ke ItemTemplateSelector properti .ItemsControl
<ItemsControl
Template="{StaticResource ScrollTemplate}"
ItemsSource="{Binding Source={StaticResource items_list}}"
ItemTemplateSelector="{StaticResource auctionItemDataTemplateSelector}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Contoh berikut menunjukkan implementasi AuctionItemDataTemplateSelector
kelas dengan penimpaan SelectTemplate metode :
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
Dalam hal ini, dalam SelectTemplate metode kelas , ada logika untuk mengembalikan templat yang sesuai berdasarkan nilai SpecialFeatures
properti objek yang item
diteruskan. Templat yang akan dikembalikan ditemukan dalam sumber daya elemen amplop Window .
Saat Anda mengatur ItemTemplateSelector properti , ItemsControl diarahkan untuk secara otomatis memanggil SelectTemplate metode AuctionItemDataTemplateSelector
untuk setiap item dalam koleksi yang ItemsControl terikat. Panggilan melewati item data sebagai objek.
DataTemplate yang dikembalikan oleh metode kemudian digunakan untuk menampilkan item data tersebut.
Untuk contoh lain, lihat Gambaran Umum Templat Data.
Keterangan
Anda menggunakan ItemTemplate untuk menentukan visualisasi objek data. Jika Anda memiliki lebih dari satu templat yang ditentukan dan ingin menyediakan logika untuk mengembalikan templat yang akan digunakan, maka Anda menggunakan properti ini. Perhatikan bahwa properti ini diabaikan jika ItemTemplate diatur.
memberikan ItemsControl fleksibilitas yang besar untuk kustomisasi visual dan menyediakan banyak properti gaya dan templat. ItemContainerStyle Gunakan properti atau ItemContainerStyleSelector properti untuk mengatur gaya agar memengaruhi tampilan elemen yang berisi item data. Misalnya, untuk ListBox, kontainer yang dihasilkan adalah ListBoxItem kontrol; untuk ComboBox, kontainer tersebut adalah ComboBoxItem kontrol. Untuk memengaruhi tata letak item, gunakan ItemsPanel properti . Jika Anda menggunakan pengelompokan pada kontrol, Anda dapat menggunakan GroupStyle properti atau GroupStyleSelector .
Untuk informasi selengkapnya, lihat Gambaran Umum Templat Data.
Penggunaan Atribut XAML
<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>
Nilai XAML
ResourceExtension Salah satu hal berikut: StaticResource
, atau DynamicResource
. Kecuali gaya itu sendiri berisi referensi ke referensi run-time potensial seperti sumber daya sistem atau preferensi pengguna, StaticResource
referensi ke gaya biasanya direkomendasikan untuk performa.
SelectorResourceKeyx:Key
nilai string yang mengacu pada pemilih yang diminta sebagai sumber daya.
Informasi Properti Dependensi
Bidang pengidentifikasi | ItemTemplateSelectorProperty |
Properti metadata diatur ke true |
Tidak ada |