Sdílet prostřednictvím


ItemsControl.ItemTemplateSelector Vlastnost

Definice

Získá nebo nastaví vlastní logiku pro výběr šablony použité k zobrazení každé položky.

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

Hodnota vlastnosti

Vlastní DataTemplateSelector objekt, který poskytuje logiku DataTemplatea vrací . Výchozí formát je null.

Atributy

Příklady

V následujícím příkladu auctionItemDataTemplateSelector je název prostředku (odpovídající AuctionItemDataTemplateSelector třídě) přiřazen vlastnosti ItemTemplateSelectorItemsControl.

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

Následující příklad ukazuje implementaci AuctionItemDataTemplateSelector třídy s přepsání SelectTemplate metody :

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

V tomto případě v rámci SelectTemplate metody třídy existuje logika vrácení příslušné šablony na základě hodnoty SpecialFeatures vlastnosti předaného objektu item . Šablona, která se má vrátit, se nachází v prostředcích elementu obálky Window .

Když nastavíte ItemTemplateSelector vlastnost , ItemsControl je směrována na automatické volání SelectTemplate metody AuctionItemDataTemplateSelector pro pro každou položku v kolekci, ke které ItemsControl je vázán. Volání předá datovou položku jako objekt. Objekt DataTemplate vrácený metodou se pak použije k zobrazení této datové položky.

Další příklad najdete v tématu Přehled šablon dat.

Poznámky

Použijete k ItemTemplate určení vizualizace datových objektů. Pokud máte definováno více než jednu šablonu a chcete zadat logiku pro vrácení šablony k použití, použijte tuto vlastnost. Všimněte si, že tato vlastnost je ignorována, pokud ItemTemplate je nastavena.

Poskytuje ItemsControl velkou flexibilitu pro vizuální přizpůsobení a poskytuje mnoho vlastností stylů a šablon. ItemContainerStyle Pomocí vlastnosti nebo ItemContainerStyleSelector vlastnosti můžete nastavit styl tak, aby ovlivnil vzhled prvků, které obsahují datové položky. Například pro ListBoxjsou vygenerované kontejnery ListBoxItem ovládací prvky, pro ComboBoxjsou to ComboBoxItem ovládací prvky. Chcete-li ovlivnit rozložení položek, použijte ItemsPanel vlastnost . Pokud u ovládacího prvku používáte seskupování, můžete použít GroupStyle vlastnost nebo GroupStyleSelector .

Další informace najdete v tématu Přehled šablon dat.

Použití atributu XAML

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

Hodnoty XAML

ResourceExtension Jedna z následujících možností: StaticResource, nebo DynamicResource. Pokud samotné styly neobsahují odkazy na potenciální odkazy za běhu, jako jsou systémové prostředky nebo uživatelské předvolby, StaticResource obvykle se z hlediska výkonu doporučuje odkaz na styl.

SelectorResourceKeyx:Key hodnota řetězce odkazující na selektor, který se požaduje jako prostředek.

Informace o vlastnosti závislosti

Pole Identifikátor ItemTemplateSelectorProperty
Vlastnosti metadat nastavené na true Žádné

Platí pro

Viz také