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 klasy ItemsControl.
<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 przedstawiono 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 zwracania odpowiedniego szablonu 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.
Aby uzyskać inny przykład, zobacz Omówienie tworzenia szablonów danych.
Uwagi
Służy do ItemTemplate określania wizualizacji obiektów danych. Jeśli zdefiniowano więcej niż jeden szablon i chcesz podać logikę, aby zwrócić szablon 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 szablonów. ItemContainerStyle Użyj właściwości lub ItemContainerStyleSelector właściwości, aby ustawić styl, aby wpłynąć na wygląd elementów zawierających elementy danych. Na przykład w przypadku ListBoxelementów , wygenerowane kontenery są ListBoxItem kontrolkami. W przypadku ComboBoxpolecenia są to ComboBoxItem 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 or 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
ResourceExtension
Jeden z następujących elementów: StaticResource
, lub DynamicResource
. Chyba że same style zawierają odwołania do potencjalnych odwołań do czasu wykonywania, takich jak zasoby systemowe lub preferencje użytkownika, StaticResource
odwołanie do stylu jest zwykle zalecane w celu uzyskania wydajności.
SelectorResourceKey
x: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 |