Bagikan melalui


ItemsControl.ItemTemplateSelector Properti

Definisi

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

Berlaku untuk

Lihat juga