ItemsControl.ItemTemplateSelector Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 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: StaticResource
oder 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 |