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

DataTemplateSelector

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 der ItemsControl.

<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 zurückzugebende Vorlage wird in den Ressourcen des Enveloping-Elements Window gefunden.

Wenn Sie die ItemTemplateSelector Eigenschaft festlegen, wird die ItemsControl Methode AuctionItemDataTemplateSelector für die einzelnen Elemente in der Auflistung automatisch aufgerufenSelectTemplate, an die die ItemsControl Eigenschaft gebunden ist. Der Aufruf übergibt das Datenelement als Objekt. Die DataTemplate von der Methode zurückgegebene Methode wird dann verwendet, um dieses Datenelement anzuzeigen.

Ein weiteres Beispiel finden Sie unter "Übersicht über daten templating".

Hinweise

Sie verwenden die ItemTemplate Zum Angeben der Visualisierung der Datenobjekte. Wenn Sie mehrere Vorlagen definiert haben und Logik angeben möchten, um eine Vorlage zurückzugeben, die verwendet werden soll, verwenden Sie diese Eigenschaft. Beachten Sie, dass diese Eigenschaft ignoriert wird, wenn ItemTemplate sie festgelegt ist.

Dies ItemsControl bietet eine große Flexibilität für visuelle Anpassungen und bietet viele Formatierungs- und Vorlageneigenschaften. Verwenden Sie die ItemContainerStyle Eigenschaft oder die ItemContainerStyleSelector Eigenschaft, um eine Formatvorlage festzulegen, um die Darstellung der Elemente, die die Datenelemente enthalten, zu beeinflussen. ListBoxBeispielsweise sind die generierten Container Steuerelemente, für ComboBoxdie sie Steuerelemente sind ListBoxItem ComboBoxItem. Verwenden Sie die ItemsPanel Eigenschaft, um das Layout der Elemente zu beeinflussen. Wenn Sie die Gruppierung für Ihr Steuerelement verwenden, können Sie die GroupStyle Eigenschaft verwenden GroupStyleSelector .

Weitere Informationen finden Sie unter Übersicht über Datenvorlagen.

Verwendung von XAML-Attributen

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

XAML-Werte

ResourceExtension
Eine der folgenden: StaticResourceoder DynamicResource. Wenn die Formatvorlagen selbst Verweise auf potenzielle Laufzeitverweise wie Systemressourcen oder Benutzereinstellungen enthalten, StaticResource wird der Verweis auf eine Formatvorlage in der Regel für die Leistung empfohlen.

SelectorResourceKey
x:Key Zeichenfolgenwert, der auf die Auswahl verweist, die als Ressource angefordert wird.

Informationen zur Abhängigkeitseigenschaft

Bezeichnerfeld ItemTemplateSelectorProperty
Metadateneigenschaften auf true festgelegt Keine

Gilt für:

Siehe auch