ItemsControl.ItemTemplateSelector Proprietà

Definizione

Ottiene o imposta la logica personalizzata per la scelta di un modello usato per visualizzare ogni elemento.

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

Valore della proprietà

DataTemplateSelector

Oggetto DataTemplateSelector personalizzato che fornisce la logica e restituisce un oggetto DataTemplate. Il valore predefinito è null.

Attributi

Esempio

Nell'esempio seguente il auctionItemDataTemplateSelector nome della risorsa (corrispondente a una AuctionItemDataTemplateSelector classe) viene assegnato alla ItemTemplateSelector proprietà dell'oggetto ItemsControl.

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

Nell'esempio seguente viene illustrata l'implementazione della AuctionItemDataTemplateSelector classe con un override del SelectTemplate metodo:

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

In questo caso, all'interno SelectTemplate del metodo della classe, esiste la logica per restituire il modello appropriato in base al valore della SpecialFeatures proprietà dell'oggetto item passato. Il modello da restituire si trova nelle risorse dell'elemento avvolgente Window .

Quando si imposta la ItemTemplateSelector proprietà, l'oggetto ItemsControl viene chiamato automaticamente il SelectTemplate metodo di AuctionItemDataTemplateSelector per ognuno degli elementi della raccolta a cui è associato.ItemsControl La chiamata passa l'elemento di dati come oggetto. L'oggetto DataTemplate restituito dal metodo viene quindi usato per visualizzare tale elemento di dati.

Per un altro esempio, vedere Panoramica di Data Templating.

Commenti

Usare per ItemTemplate specificare la visualizzazione degli oggetti dati. Se sono stati definiti più modelli e si vuole specificare la logica per restituire un modello da usare, usare questa proprietà. Si noti che questa proprietà viene ignorata se ItemTemplate è impostata.

Offre ItemsControl una grande flessibilità per la personalizzazione visiva e offre molti stili e proprietà di templating. Utilizzare la proprietà o la ItemContainerStyle ItemContainerStyleSelector proprietà per impostare uno stile per influire sull'aspetto degli elementi che contengono gli elementi di dati. Ad esempio, per ListBox, i contenitori generati sono ListBoxItem controlli; per ComboBox, sono ComboBoxItem controlli. Per influire sul layout degli elementi, usare la ItemsPanel proprietà . Se si usa il raggruppamento sul controllo, è possibile usare la GroupStyle proprietà o GroupStyleSelector .

Per altre informazioni, vedere Panoramica del templating dei dati.

Uso della sintassi XAML per gli attributi

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

Valori XAML

ResourceExtension
Uno dei seguenti: StaticResource, o DynamicResource. A meno che gli stili stessi contengano riferimenti a potenziali riferimenti di runtime, ad esempio risorse di sistema o preferenze utente, StaticResource il riferimento a uno stile è in genere consigliato per le prestazioni.

SelectorResourceKey
x:Key valore stringa che fa riferimento al selettore richiesto come risorsa.

Informazioni proprietà di dipendenza

Campo Identificatore ItemTemplateSelectorProperty
Proprietà dei metadati impostate su true Nessuno

Si applica a

Vedi anche