ItemsControl.ItemTemplateSelector Özellik

Tanım

Her öğeyi görüntülemek için kullanılan bir şablon seçmek için özel mantığı alır veya ayarlar.

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

Özellik Değeri

Mantık sağlayan ve döndüren özel DataTemplateSelector bir DataTemplatenesne. Varsayılan değer: null.

Öznitelikler

Örnekler

Aşağıdaki örnekte, auctionItemDataTemplateSelector kaynak adı (bir AuctionItemDataTemplateSelector sınıfa karşılık gelir) özelliğine ItemTemplateSelectorItemsControlatanır.

<ItemsControl 
   Template="{StaticResource ScrollTemplate}" 
   ItemsSource="{Binding Source={StaticResource items_list}}"
   ItemTemplateSelector="{StaticResource auctionItemDataTemplateSelector}" >
   <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
         <StackPanel />
      </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>
</ItemsControl>

Aşağıdaki örnekte, yönteminin AuctionItemDataTemplateSelector geçersiz kılınmasıyla sınıfın uygulanması gösterilmektedir SelectTemplate :

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

Bu durumda, sınıfının yöntemi içinde SelectTemplate geçirilen nesnenin özelliğinin item değerine SpecialFeatures göre uygun şablonu döndürmek için bir mantık vardır. Döndürülecek şablon, enveloping Window öğesinin kaynaklarında bulunur.

özelliğini ayarladığınızdaItemTemplateSelector, ItemsControl öğesinin bağlı olduğu koleksiyondaki öğelerin her biri için yöntemini AuctionItemDataTemplateSelector otomatik olarak çağırmaya SelectTemplateItemsControl yönlendirilir. Çağrısı, veri öğesini bir nesne olarak geçirir. DataTemplate Yöntemi tarafından döndürülen daha sonra bu veri öğesini görüntülemek için kullanılır.

Başka bir örnek için bkz. Veri Şablon oluşturmaya genel bakış.

Açıklamalar

veri nesnelerinin görselleştirmesini belirtmek için öğesini kullanırsınız ItemTemplate . Tanımlanmış birden fazla şablonunuz varsa ve kullanılacak şablonu döndürmek için mantık sağlamak istiyorsanız, bu özelliği kullanırsınız. Ayarlanırsa ItemTemplate bu özelliğin yoksayıldığını unutmayın.

görsel ItemsControl özelleştirme için büyük esneklik sağlar ve birçok stil oluşturma ve şablon oluşturma özelliği sağlar. ItemContainerStyle Veri öğelerini içeren öğelerin görünümünü etkileyecek bir stil ayarlamak için özelliğini veya ItemContainerStyleSelector özelliğini kullanın. Örneğin, için ListBoxoluşturulan kapsayıcılar denetimlerdir ListBoxItem ; için ComboBoxbunlar denetimlerdir ComboBoxItem . Öğelerin düzenini etkilemek için özelliğini kullanın ItemsPanel . Denetiminizde gruplandırma kullanıyorsanız veya GroupStyleSelector özelliğini kullanabilirsinizGroupStyle.

Daha fazla bilgi için bkz. Veri Şablon oluşturmaya genel bakış.

XAML Öznitelik Kullanımı

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

XAML Değerleri

ResourceExtension Aşağıdakilerden biri: StaticResource, veya DynamicResource. Stillerin kendisi sistem kaynakları veya kullanıcı tercihleri gibi olası çalışma zamanı başvurularına başvuru içermiyorsa, StaticResource performans için genellikle stil başvurusu önerilir.

SelectorResourceKeyx:Key kaynak olarak istenen seçiciye başvuran dize değeri.

Bağımlılık Özelliği Bilgileri

Tanımlayıcı alanı ItemTemplateSelectorProperty
Meta veri özellikleri olarak ayarlandı true Hiçbiri

Şunlara uygulanır

Ayrıca bkz.