ItemsControl.ItemTemplateSelector Eigenschap

Definitie

Hiermee haalt u de aangepaste logica op voor het kiezen van een sjabloon die wordt gebruikt om elk item weer te geven.

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

Waarde van eigenschap

Een aangepast DataTemplateSelector object dat logica biedt en een DataTemplate. De standaardwaarde is null.

Kenmerken

Voorbeelden

In het volgende voorbeeld wordt de auctionItemDataTemplateSelector resourcenaam (die overeenkomt met een AuctionItemDataTemplateSelector klasse) toegewezen aan de ItemTemplateSelector eigenschap van de ItemsControl.

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

In het volgende voorbeeld ziet u de implementatie van de AuctionItemDataTemplateSelector klasse met een onderdrukking van de SelectTemplate methode:

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

In dit geval is er binnen de SelectTemplate methode van de klasse logica om de juiste sjabloon te retourneren op basis van de waarde van de SpecialFeatures eigenschap van het item doorgegeven object. De sjabloon die moet worden geretourneerd, vindt u in de resources van het omhullende Window element.

Wanneer u de ItemTemplateSelector eigenschap instelt, wordt de ItemsControl opdracht om automatisch de SelectTemplate methode aan te roepen voor AuctionItemDataTemplateSelector elk van de items in de verzameling waaraan de ItemsControl waarde is gebonden. De aanroep geeft het gegevensitem door als een object. De DataTemplate gegevens die door de methode worden geretourneerd, worden vervolgens gebruikt om dat gegevensitem weer te geven.

Zie Overzicht van gegevens templating voor een ander voorbeeld.

Opmerkingen

U gebruikt de ItemTemplate functie om de visualisatie van de gegevensobjecten op te geven. Als u meer dan één sjabloon hebt gedefinieerd en logica wilt opgeven om een te gebruiken sjabloon te retourneren, gebruikt u deze eigenschap. Houd er rekening mee dat deze eigenschap wordt genegeerd als ItemTemplate deze is ingesteld.

Het ItemsControl biedt een grote flexibiliteit voor visuele aanpassing en biedt veel stijl- en verleidende eigenschappen. Gebruik de ItemContainerStyle eigenschap of de ItemContainerStyleSelector eigenschap om een stijl in te stellen die van invloed is op het uiterlijk van de elementen die de gegevensitems bevatten. De gegenereerde containers zijn bijvoorbeeld ListBoxbesturingselementen; voor ListBoxItem, ze zijn ComboBox besturingselementen.ComboBoxItem Als u de indeling van de items wilt beïnvloeden, gebruikt u de ItemsPanel eigenschap. Als u groepering op uw besturingselement gebruikt, kunt u de GroupStyle of GroupStyleSelector eigenschap gebruiken.

Zie Overzicht van gegevens templating voor meer informatie.

XAML-kenmerkgebruik

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

XAML-waarden

ResourceExtension Een van de volgende opties: StaticResource, of DynamicResource. Tenzij de stijlen zelf verwijzingen bevatten naar mogelijke runtimeverwijzingen, zoals systeembronnen of gebruikersvoorkeuren, StaticResource wordt verwijzing naar een stijl meestal aanbevolen voor prestaties.

SelectorResourceKeyx:Key tekenreekswaarde die verwijst naar de kiezer die wordt aangevraagd als een resource.

Informatie over afhankelijkheidseigenschappen

Item Waarde
Id-veld ItemTemplateSelectorProperty
Eigenschappen van metagegevens ingesteld op true Geen

Van toepassing op

Zie ook