Panoramica sul controllo ListView

Aggiornamento: novembre 2007

Il controllo ListView fornisce l'infrastruttura per la visualizzazione di un insieme di elementi dei dati in layout o visualizzazioni diverse. Ad esempio, un utente può scegliere di visualizzare gli elementi dei dati in una tabella e anche di ordinare le relative colonne.

Nel presente argomento sono contenute le seguenti sezioni.

  • Definizione di ListView
  • Definizione di una modalità di visualizzazione per un controllo ListView
  • Associazione di dati a un controllo ListView
  • Applicazione di uno stile a un controllo ListView che implementa una GridView
  • Condivisione della stessa modalità di visualizzazione
  • Creazione di una modalità di visualizzazione personalizzata
  • Argomenti correlati

Definizione di ListView

Il controllo ListView è un oggetto ItemsControl derivato da ListBox. In genere, i relativi elementi sono membri di una raccolta dati e sono rappresentati come oggetti ListViewItem. Un oggetto ListViewItem è un oggetto ContentControl e può contenere solo un singolo elemento figlio. Tuttavia, tale elemento figlio può essere qualsiasi elemento visuale.

Definizione di una modalità di visualizzazione per un controllo ListView

Per specificare una modalità di visualizzazione per il contenuto di un controllo ListView, impostare la proprietà View. Una modalità di visualizzazione disponibile in Windows Presentation Foundation (WPF) è GridView, che visualizza una raccolta di elementi dei dati in una tabella con colonne personalizzabili.

Nell'esempio seguente viene illustrato come definire un oggetto GridView per un controllo ListView che visualizza informazioni sui dipendenti. Per l'esempio completo, vedere Esempio di ListView che utilizza una GridView.

<ListView ItemsSource="{Binding Source=
                       {StaticResource EmployeeInfoDataSource}}">

  <ListView.View>

    <GridView AllowsColumnReorder="true"
              ColumnHeaderToolTip="Employee Information">

      <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=FirstName}" 
                      Header="First Name" Width="100"/>

                  <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=LastName}" 
                      Width="100">
                      <GridViewColumnHeader>Last Name
                          <GridViewColumnHeader.ContextMenu>
                          <ContextMenu  MenuItem.Click="LastNameCM_Click"  
                                        Name="LastNameCM">
                              <MenuItem Header="Ascending" />
                              <MenuItem Header="Descending" />
                          </ContextMenu>
                          </GridViewColumnHeader.ContextMenu>
                      </GridViewColumnHeader>
                  </GridViewColumn>

                  <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=EmployeeNumber}" 
                      Header="Employee No." Width="100"/>
    </GridView>

  </ListView.View>
</ListView>

Nell'immagine seguente viene illustrato come vengono visualizzati i dati per l'esempio precedente.

ListView con output GridView

È possibile creare una modalità di visualizzazione personalizzata definendo una classe che eredita dalla classe ViewBase. La classe ViewBase fornisce l'infrastruttura necessaria per creare una visualizzazione personalizzata. Per ulteriori informazioni sulla creazione di una visualizzazione personalizzata, vedere Procedura: creare una modalità di visualizzazione personalizzata per un oggetto ListView.

Associazione di dati a un controllo ListView

Utilizzare le proprietà Items e ItemsSource per specificare gli elementi per un controllo ListView. Nell'esempio seguente la proprietà ItemsSource viene impostata su una raccolta dati denominata EmployeeInfoDataSource. Per l'esempio completo, vedere Esempio di ListView che utilizza una GridView.

<ListView ItemsSource="{Binding Source=
                       {StaticResource EmployeeInfoDataSource}}">

In un oggetto GridView gli oggetti GridViewColumn vengono associati ai campi dati specificati. Nell'esempio seguente viene associato un oggetto GridViewColumn a un campo dati specificando un oggetto Binding per la proprietà DisplayMemberBinding. Per l'esempio completo, vedere Esempio di ListView che utilizza una GridView.

GridViewColumn gvc1 = new GridViewColumn();
gvc1.DisplayMemberBinding = new Binding("FirstName");
gvc1.Header = "FirstName";
gvc1.Width = 100;
<GridViewColumn DisplayMemberBinding=
                    "{Binding Path=FirstName}" 
                Header="First Name" Width="100"/>

È anche possibile specificare un oggetto Binding come parte della definizione di un oggetto DataTemplate utilizzata per applicare uno stile alle celle di una colonna. Nell'esempio seguente l'oggetto DataTemplate identificato con un oggetto ResourceKey imposta l'oggetto Binding per un oggetto GridViewColumn. Si noti che in questo esempio non viene definita la proprietà DisplayMemberBinding, perché altrimenti verrebbe eseguito l'override dell'associazione specificata da DataTemplate. Per l'esempio completo, vedere Esempio di ListView che utilizza una GridView con modelli.

<DataTemplate x:Key="myCellTemplateMonth">
  <DockPanel>
    <TextBlock Foreground="DarkBlue" HorizontalAlignment="Center">
      <TextBlock.Text>
        <Binding Path="Month"/>
      </TextBlock.Text>
    </TextBlock>
  </DockPanel>
</DataTemplate>
<GridViewColumn Header="Month" Width="80"
      HeaderContainerStyle="{StaticResource myHeaderStyle}"
      HeaderTemplate="{StaticResource myHeaderTemplate}"
      DisplayMemberBinding="{Binding Path=Month}"/>

Applicazione di uno stile a un controllo ListView che implementa una GridView

Il controllo ListView contiene gli oggetti ListViewItem, che rappresentano gli elementi dei dati visualizzati. È possibile utilizzare le proprietà seguenti per definire il contenuto e lo stile degli elementi di dati:

Per evitare problemi di allineamento tra le celle in un controllo GridView, non utilizzare la proprietà ItemContainerStyle per impostare proprietà o aggiungere contenuto che influisce sulla larghezza di un elemento in un controllo ListView. Ad esempio, può verificarsi un problema di allineamento quando si imposta la proprietà Margin in ItemContainerStyle. Per specificare proprietà o definire contenuto che influisce sulla larghezza degli elementi in un controllo GridView, utilizzare le proprietà della classe GridView e le classi correlate, ad esempio GridViewColumn.

Per ulteriori informazioni su come utilizzare GridView e le relative classi di supporto, vedere Cenni preliminari su GridView.

Se si definisce una proprietà ItemContainerStyle per un controllo ListView e si definisce anche una proprietà ItemTemplate, è necessario includere un oggetto ContentPresenter nello stile affinché la proprietà ItemTemplate funzioni correttamente.

Non utilizzare le proprietà HorizontalContentAlignment e VerticalContentAlignment per il contenuto del controllo ListView visualizzato utilizzando un controllo GridView. Per specificare l'allineamento del contenuto in una colonna di un controllo GridView, definire una proprietà CellTemplate.

Condivisione della stessa modalità di visualizzazione

Due controlli ListView non possono condividere contemporaneamente la stessa modalità di visualizzazione. Se si tenta di utilizzare la stessa modalità di visualizzazione con più di un controllo ListView, viene generata un'eccezione.

Per specificare una modalità di visualizzazione che può essere utilizzata simultaneamente da più controlli ListView, utilizzare i modelli o gli stili. Per un esempio su come definire le visualizzazioni come Resources, vedere Esempio di ListView con più visualizzazioni.

Creazione di una modalità di visualizzazione personalizzata

Le visualizzazioni personalizzate come GridView vengono derivate dalla classe astratta ViewBase, che rende disponibili gli strumenti per visualizzare gli elementi di dati rappresentati come oggetti ListViewItem.

Per un esempio di un modalità di visualizzazione personalizzata, vedere Esempio di ListView con più visualizzazioni.

Vedere anche

Concetti

Cenni preliminari su GridView

Ottimizzazione delle prestazioni: controlli

Riferimenti

GridView

ListView

ListViewItem

Binding

Altre risorse

Procedure relative al controllo ListView

Esempi di ListView