ItemsControl.ItemTemplateSelector Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
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 ItemContainerStyleItemContainerStyleSelector 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.
SelectorResourceKeyx: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 |