ItemsControl.ItemTemplate Proprietà

Definizione

Ottiene o imposta l'oggetto DataTemplate usato per visualizzare ogni elemento.

public:
 property System::Windows::DataTemplate ^ ItemTemplate { System::Windows::DataTemplate ^ get(); void set(System::Windows::DataTemplate ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.DataTemplate ItemTemplate { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemTemplate : System.Windows.DataTemplate with get, set
Public Property ItemTemplate As DataTemplate

Valore della proprietà

Oggetto DataTemplate che specifica la visualizzazione degli oggetti dati. Il valore predefinito è null.

Attributi

Esempio

Nell'esempio seguente viene illustrato come creare un'inline DataTemplate . Specifica DataTemplate che ogni elemento dati viene visualizzato come tre TextBlock elementi all'interno di un StackPaneloggetto . In questo esempio l'oggetto dati è una classe denominata Task. Si noti che ogni TextBlock elemento in questo modello è associato a una proprietà della Task classe.

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}">
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel>
         <TextBlock Text="{Binding Path=TaskName}" />
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Priority}"/>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>

È più comune definire un DataTemplate oggetto nella sezione risorse in modo che possa essere un oggetto riutilizzabile, come nell'esempio seguente:

<Window.Resources>
<DataTemplate x:Key="myTaskTemplate">
  <StackPanel>
    <TextBlock Text="{Binding Path=TaskName}" />
    <TextBlock Text="{Binding Path=Description}"/>
    <TextBlock Text="{Binding Path=Priority}"/>
  </StackPanel>
</DataTemplate>
</Window.Resources>

È possibile a questo punto usare myTaskTemplate come risorsa, come illustrato nell'esempio seguente:

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplate="{StaticResource myTaskTemplate}"/>

Per l'esempio completo, vedere Introduction to Data Templating Sample (Introduzione a un esempio di applicazione di modello).

Commenti

Usare per ItemTemplate specificare la visualizzazione degli oggetti dati. Se l'oggetto ItemsControl è associato a un oggetto raccolta e non vengono fornite istruzioni di visualizzazione specifiche usando un DataTemplateoggetto , l'interfaccia utente risultante di ogni elemento è una rappresentazione stringa di ogni oggetto nell'insieme sottostante.

Quando si imposta un oggetto ItemTemplate in un ItemsControloggetto , l'interfaccia utente viene generata come indicato di seguito (usando come ListBox esempio):

  1. Durante la generazione del contenuto, viene ItemsPanel avviata una richiesta per ItemContainerGenerator creare un contenitore per ogni elemento dati. Per ListBox, il contenitore è un ListBoxItemoggetto . Il generatore richiama nuovamente nell'oggetto ItemsControl per preparare il contenitore.

  2. Parte della preparazione comporta la copia dell'oggetto ItemTemplateListBox da includere nell'oggetto ContentTemplate .ListBoxItem

  3. Analogamente a tutti i ContentControl tipi, l'oggetto ControlTemplate di un ListBoxItem oggetto contiene un ContentPresenteroggetto . Quando viene applicato il modello, crea un ContentPresenter oggetto il cui ContentTemplate oggetto è associato all'oggetto ContentTemplateListBoxItem.

  4. Infine, si ContentPresenter applica a ContentTemplate se stesso e che crea l'interfaccia utente.

Se sono presenti più di una DataTemplate definita e si vuole fornire la logica a livello di codice per scegliere e applicare a livello di codice una DataTemplateproprietà , usare la ItemTemplateSelector proprietà .

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 ItemTemplate=" ResourceExtension TemplateResourceKey"/>  

Valori XAML

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

TemplateResourceKey
Valore stringa di direttiva x:Key che fa riferimento al modello richiesto come risorsa.

Informazioni proprietà di dipendenza

Campo Identificatore ItemTemplateProperty
Proprietà dei metadati impostate su true Nessuno

Si applica a

Vedi anche