ItemsControl.ItemTemplateSelector Eigenschaft

Definition

Ruft die benutzerdefinierte Logik für das Auswählen einer Vorlage ab, die zum Anzeigen der einzelnen Elemente verwendet wird, oder legt diese fest.

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

Eigenschaftswert

Ein benutzerdefiniertes DataTemplateSelector-Objekt, das Logik bereitstellt und eine DataTemplate zurückgibt. Der Standardwert ist null.

Attribute

Beispiele

Im folgenden Beispiel wird der auctionItemDataTemplateSelector Ressourcenname (entspricht einer AuctionItemDataTemplateSelector Klasse) der ItemTemplateSelector -Eigenschaft von ItemsControlzugewiesen.

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

Das folgende Beispiel zeigt die Implementierung der AuctionItemDataTemplateSelector -Klasse mit einer Außerkraftsetzung der 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 diesem Fall gibt es innerhalb der SelectTemplate -Methode der -Klasse logik, die entsprechende Vorlage basierend auf dem Wert der SpecialFeatures -Eigenschaft des item übergebenen Objekts zurückzugeben. Die Vorlage, die zurückgegeben werden soll, wird in den Ressourcen des umschließenden Window-Elements gesucht.

Wenn Sie die ItemTemplateSelector -Eigenschaft festlegen, wird angewiesen ItemsControl , automatisch die SelectTemplate -Methode von AuctionItemDataTemplateSelector für jedes element in der Auflistung aufzurufen, an das gebunden ItemsControl ist. Der Aufruf übergibt das Datenelement als -Objekt. Die DataTemplate , die von der -Methode zurückgegeben wird, wird dann verwendet, um dieses Datenelement anzuzeigen.

Ein weiteres Beispiel finden Sie unter Übersicht über Datenvorlagen.

Hinweise

Verwenden Sie , ItemTemplate um die Visualisierung der Datenobjekte anzugeben. Wenn Sie mehrere Vorlagen definiert haben und Logik bereitstellen möchten, um eine zu verwendende Vorlage zurückzugeben, verwenden Sie diese Eigenschaft. Beachten Sie, dass diese Eigenschaft ignoriert wird, wenn ItemTemplate festgelegt ist.

Bietet ItemsControl eine große Flexibilität bei der visuellen Anpassung und bietet viele Formatierungs- und Vorlageneigenschaften. Verwenden Sie die ItemContainerStyle -Eigenschaft oder die ItemContainerStyleSelector -Eigenschaft, um einen Stil festzulegen, der sich auf die Darstellung der Elemente auswirkt, die die Datenelemente enthalten. Beispielsweise ListBoxsind ListBoxItem die generierten Container Steuerelemente, für ComboBoxsind sie ComboBoxItem Steuerelemente. Um das Layout der Elemente zu beeinflussen, verwenden Sie die ItemsPanel -Eigenschaft. Wenn Sie die Gruppierung für Ihr Steuerelement verwenden, können Sie die GroupStyle - oder GroupStyleSelector -Eigenschaft verwenden.

Weitere Informationen finden Sie unter Übersicht über Datenvorlagen.

Verwendung von XAML-Attributen

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

XAML-Werte

ResourceExtension Einer der folgenden: StaticResource, oder DynamicResource. Sofern die Stile selbst Keine Verweise auf potenzielle Laufzeitverweise wie Systemressourcen oder Benutzereinstellungen enthalten, StaticResource wird der Verweis auf eine Formatvorlage für die Leistung in der Regel empfohlen.

SelectorResourceKeyx:Key Zeichenfolgenwert, der auf den Selektor verweist, der als Ressource angefordert wird.

Informationen zur Abhängigkeitseigenschaft

Bezeichnerfeld ItemTemplateSelectorProperty
Metadateneigenschaften auf true festgelegt Keine

Gilt für:

Weitere Informationen