Condividi tramite


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 DataTemplate oggetto inline. Specifica DataTemplate che ogni elemento di dati viene visualizzato come tre TextBlock elementi all'interno di un oggetto StackPanel. 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 oggetto DataTemplate nella sezione resources 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. ItemsControl Se l'oggetto è associato a un oggetto raccolta e non si forniscono istruzioni di visualizzazione specifiche usando , DataTemplatel'interfaccia utente risultante di ogni elemento è una rappresentazione di stringa di ogni oggetto nell'insieme sottostante.

Quando si imposta un ItemsControloggetto ItemTemplate su , l'interfaccia utente viene generata come segue (usando come ListBox esempio):

  1. Durante la ItemsPanel generazione del contenuto, avvia una richiesta per la ItemContainerGenerator creazione di un contenitore per ogni elemento di dati. Per ListBox, il contenitore è un oggetto ListBoxItem. Il generatore richiama nuovamente nell'oggetto ItemsControl per preparare il contenitore.

  2. Parte della preparazione prevede la copia di dell'oggetto ItemTemplateListBox come ContentTemplate dell'oggetto dell'oggetto ListBoxItem.

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

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

Se sono state definite più di una DataTemplate e si vuole fornire logica per scegliere e applicare a livello di codice un DataTemplateoggetto , usare la ItemTemplateSelector proprietà .

Offre ItemsControl una grande flessibilità per la personalizzazione visiva e offre molti stili e proprietà di creazione di modelli. Utilizzare la ItemContainerStyle proprietà o la 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, utilizzare la ItemsPanel proprietà . Se si usa il raggruppamento sul controllo, è possibile utilizzare la GroupStyle proprietà o GroupStyleSelector .

Per altre informazioni, vedere Cenni preliminari sulla creazione di modelli di dati.

Uso della sintassi XAML per gli attributi

<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>

Valori XAML

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

Valore stringa di direttiva TemplateResourceKeyx: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