ItemsControl.ItemTemplateSelector Właściwość

Definicja

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

DataTemplateSelector

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

Dotyczy

Zobacz też