ItemsControl.ItemTemplateSelector Vlastnost

Definice

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

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

DataTemplateSelector

Vlastní DataTemplateSelector objekt, který poskytuje logiku DataTemplatea vrací hodnotu . 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 vlastnost ItemTemplateSelector .ItemsControl

<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 pro 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 zkosení Window .

Když nastavíte ItemTemplateSelector vlastnost, ItemsControl směruje se automaticky volání SelectTemplate metody AuctionItemDataTemplateSelector pro každou položku v kolekci, na kterou ItemsControl je vázán. Volání předá datovou položku jako objekt. Vrácené DataTemplate 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 ItemTemplate k určení vizualizace datových objektů. Pokud máte definovanou více než jednu šablonu a chcete zadat logiku pro vrácení šablony, kterou chcete použít, použijte tuto vlastnost. Všimněte si, že tato vlastnost je ignorována, pokud ItemTemplate je nastavena.

Poskytuje ItemsControl velkou flexibilitu pro přizpůsobení vizuálu a poskytuje mnoho vlastností stylů a šablon. ItemContainerStyle Pomocí vlastnosti nebo ItemContainerStyleSelector vlastnosti nastavte styl, který má vliv na vzhled prvků, které obsahují datové položky. Například pro ListBoxvygenerované kontejnery jsou ListBoxItem ovládací prvky; pro ComboBox, jsou ComboBoxItem to ovládací prvky. Chcete-li ovlivnit rozložení položek, použijte ItemsPanel vlastnost. Pokud používáte seskupení na ovládacím prvku, můžete použít GroupStyle vlastnost nebo GroupStyleSelector vlastnost.

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í: StaticResourcenebo DynamicResource. Pokud samotné styly neobsahují odkazy na potenciální odkazy na dobu běhu, jako jsou systémové prostředky nebo uživatelské předvolby, StaticResource odkaz na styl se obvykle doporučuje pro zvýšení výkonu.

SelectorResourceKey
x:Key řetězcová hodnota odkazující na selektor, který se požaduje jako prostředek.

Informace o vlastnosti závislosti

Pole identifikátoru ItemTemplateSelectorProperty
Vlastnosti metadat nastavené na true Žádné

Platí pro

Viz také