ItemsControl.ItemTemplateSelector Egenskap

Definition

Hämtar eller anger den anpassade logiken för att välja en mall som används för att visa varje objekt.

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

Egenskapsvärde

Ett anpassat DataTemplateSelector objekt som tillhandahåller logik och returnerar en DataTemplate. Standardvärdet är null.

Attribut

Exempel

I följande exempel auctionItemDataTemplateSelector tilldelas AuctionItemDataTemplateSelector resursnamnet (som motsvarar en ItemTemplateSelector klass) egenskapen ItemsControlför .

<ItemsControl 
   Template="{StaticResource ScrollTemplate}" 
   ItemsSource="{Binding Source={StaticResource items_list}}"
   ItemTemplateSelector="{StaticResource auctionItemDataTemplateSelector}" >
   <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
         <StackPanel />
      </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>
</ItemsControl>

I följande exempel visas implementeringen av AuctionItemDataTemplateSelector klassen med en åsidosättning av SelectTemplate metoden:

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

I det här fallet SelectTemplate finns det logik i klassens metod för att returnera lämplig mall baserat på värdet SpecialFeatures för egenskapen för objektet som item skickades. Mallen som ska returneras finns i resurserna i det omslutande Window elementet.

När du anger ItemTemplateSelector egenskapen ItemsControl dirigeras den till att automatiskt anropa SelectTemplate metoden AuctionItemDataTemplateSelector för för vart och ett av objekten i samlingen som ItemsControl är bunden till. Anropet skickar dataobjektet som ett objekt. Det DataTemplate som returneras av metoden används sedan för att visa dataobjektet.

Ett annat exempel finns i Översikt över dataöverläggning.

Kommentarer

Du använder ItemTemplate för att ange visualiseringen av dataobjekten. Om du har definierat fler än en mall och vill ange logik för att returnera en mall som ska användas använder du den här egenskapen. Observera att den här egenskapen ignoreras om ItemTemplate den har angetts.

Ger ItemsControl stor flexibilitet för visuell anpassning och ger många formaterings- och mallegenskaper. ItemContainerStyle Använd egenskapen eller ItemContainerStyleSelector egenskapen för att ange ett format som påverkar utseendet på de element som innehåller dataobjekten. För är ListBox till exempel ListBoxItemde genererade containrarna kontroller. För ComboBox, är ComboBoxItem de kontroller. Använd egenskapen för att påverka layouten för objekten ItemsPanel . Om du använder gruppering på din kontroll kan du använda GroupStyle egenskapen eller GroupStyleSelector .

Mer information finns i Översikt över dataöverläggning.

XAML-attributanvändning

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

XAML-värden

ResourceExtension Något av följande: StaticResource, eller DynamicResource. Om inte själva formatmallarna innehåller referenser till potentiella körningsreferenser, till exempel systemresurser eller användarinställningar, StaticResource rekommenderas vanligtvis en referens till ett format för prestanda.

SelectorResourceKeyx:Key strängvärde som refererar till väljaren som begärs som en resurs.

Information om beroendeegenskap

Objekt Value
Identifierarfält ItemTemplateSelectorProperty
Metadataegenskaper inställda på true Ingen

Gäller för

Se även