ItemsControl.ItemTemplateSelector Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia niestandardową logikę wybierania szablonu używanego do wyświetlania każdego elementu.
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
Wartość właściwości
Obiekt niestandardowy DataTemplateSelector , który udostępnia logikę i zwraca obiekt DataTemplate. Wartość domyślna to null
.
- Atrybuty
Przykłady
W poniższym przykładzie auctionItemDataTemplateSelector
nazwa zasobu (odpowiadająca AuctionItemDataTemplateSelector
klasie) jest przypisywana do ItemTemplateSelector właściwości ItemsControlklasy .
<ItemsControl
Template="{StaticResource ScrollTemplate}"
ItemsSource="{Binding Source={StaticResource items_list}}"
ItemTemplateSelector="{StaticResource auctionItemDataTemplateSelector}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
W poniższym przykładzie pokazano implementację AuctionItemDataTemplateSelector
klasy z zastąpieniem 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
W tym przypadku w SelectTemplate metodzie klasy istnieje logika, która zwraca odpowiedni szablon na podstawie wartości SpecialFeatures
przekazanej item
właściwości obiektu. Szablon do zwrócenia znajduje się w zasobach elementu otaczania Window .
Po ustawieniu ItemTemplateSelector właściwości ItemsControl element jest kierowany do automatycznego wywoływania SelectTemplate metody AuctionItemDataTemplateSelector
dla każdego elementu w kolekcji, do której ItemsControl jest powiązana. Wywołanie przekazuje element danych jako obiekt. Element DataTemplate zwracany przez metodę jest następnie używany do wyświetlania tego elementu danych.
Inny przykład można znaleźć w temacie Data Templating Overview (Omówienie tworzenia szablonów danych).
Uwagi
Element służy ItemTemplate do określania wizualizacji obiektów danych. Jeśli zdefiniowano więcej niż jeden szablon i chcesz podać logikę w celu zwrócenia szablonu do użycia, użyj tej właściwości. Należy pamiętać, że ta właściwość jest ignorowana, jeśli ItemTemplate jest ustawiona.
Zapewnia ItemsControl dużą elastyczność dostosowywania wizualizacji i zapewnia wiele właściwości stylów i tworzenia szablonów. ItemContainerStyle Użyj właściwości lub ItemContainerStyleSelector właściwości, aby ustawić styl, aby wpływać na wygląd elementów zawierających elementy danych. Na przykład w przypadku ListBoxkontenerów generowanych przez ListBoxItem program są kontrolkami; dla ComboBoxelementu są ComboBoxItem to kontrolki. Aby wpłynąć na układ elementów, użyj ItemsPanel właściwości . Jeśli używasz grupowania w kontrolce, możesz użyć GroupStyle właściwości lub GroupStyleSelector .
Aby uzyskać więcej informacji, zobacz Omówienie tworzenia szablonów danych.
Użycie atrybutu języka XAML
<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>
Wartości XAML
Rozszerzenie zasobu Jedno z następujących elementów: StaticResource
, lub DynamicResource
. Jeśli style same w sobie nie zawierają odwołań do potencjalnych odwołań w czasie wykonywania, takich jak zasoby systemowe lub preferencje użytkownika, StaticResource
odwołanie do stylu jest zwykle zalecane do wydajności.
SelectorResourceKeyx:Key
wartość ciągu odwołująca się do żądanego selektora jako zasobu.
Informacje dotyczące właściwości zależności
Pole identyfikatora | ItemTemplateSelectorProperty |
Właściwości metadanych ustawione na true |
Brak |