Udostępnij za pośrednictwem


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

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

Dotyczy

Zobacz też