Panoramica sul controllo ListView
Il ListView controllo fornisce l'infrastruttura per visualizzare un set di elementi di dati in usando un layout o una visualizzazione diversa. Ad esempio, un utente può scegliere di visualizzare gli elementi dei dati in una tabella e anche di ordinarne le colonne.
Nota
I tipi a cui si fa riferimento in questo articolo sono disponibili nella sezione Riferimento al codice .
Definizione del controllo ListView
ListView deriva da ListBox. In genere, i relativi elementi sono membri di una raccolta dati e sono rappresentati come ListViewItem oggetti . Un ListViewItem oggetto è e ContentControl può contenere solo un singolo elemento figlio. Tale elemento figlio può tuttavia essere qualsiasi elemento visivo.
Definizione di una modalità di visualizzazione per un controllo ListView
Per specificare una modalità di visualizzazione per il contenuto di un ListView controllo, impostare la View proprietà . Una modalità di visualizzazione fornita da Windows Presentation Foundation (WPF) è GridView, che visualizza una raccolta di elementi di dati in una tabella con colonne personalizzabili.
Nell'esempio seguente viene illustrato come definire un GridView oggetto per un ListView controllo che visualizza le informazioni sui dipendenti.
<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>
La figura seguente illustra come vengono visualizzati i dati per l'esempio precedente.
È possibile creare una modalità di visualizzazione personalizzata definendo una classe che eredita dalla ViewBase classe . La ViewBase classe fornisce l'infrastruttura necessaria per creare una visualizzazione personalizzata. Per altre informazioni su come creare una visualizzazione personalizzata, vedere Creare una modalità di visualizzazione personalizzata per un controllo ListView.
Associazione di dati a un controllo ListView
Utilizzare le Items proprietà e ItemsSource per specificare gli elementi per un ListView controllo . Nell'esempio seguente la ItemsSource proprietà viene impostata su una raccolta di dati denominata EmployeeInfoDataSource
.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
In un GridViewoggetto , GridViewColumn gli oggetti vengono associati ai campi dati specificati. Nell'esempio seguente un GridViewColumn oggetto viene associato a un campo dati specificando un Binding oggetto per la DisplayMemberBinding proprietà .
GridViewColumn gvc1 = new GridViewColumn();
gvc1.DisplayMemberBinding = new Binding("FirstName");
gvc1.Header = "FirstName";
gvc1.Width = 100;
Dim gvc1 As 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 come Binding parte di una DataTemplate definizione utilizzata per applicare uno stile alle celle in una colonna. Nell'esempio seguente l'oggetto DataTemplate identificato con un ResourceKey oggetto imposta l'oggetto Binding per un oggetto GridViewColumn. Si noti che questo esempio non definisce perché DisplayMemberBinding in questo modo ha la precedenza su CellTemplate.
<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"
CellTemplate="{StaticResource myCellTemplateMonth}"/>
Applicazione di uno stile a un controllo ListView che implementa un oggetto GridView
Il ListView controllo contiene ListViewItem oggetti che rappresentano gli elementi di dati visualizzati. È possibile usare le proprietà seguenti per definire il contenuto e lo stile degli elementi di dati:
ListView Nel controllo usare le ItemTemplateproprietà , ItemTemplateSelectore ItemContainerStyle .
ListViewItem Nel controllo utilizzare le ContentTemplate proprietà e ContentTemplateSelector .
Per evitare problemi di allineamento tra le celle di un GridViewoggetto , non utilizzare per ItemContainerStyle impostare le proprietà o aggiungere contenuto che influisce sulla larghezza di un elemento in un oggetto ListView. Ad esempio, un problema di allineamento può verificarsi quando si imposta la Margin proprietà in ItemContainerStyle. Per specificare le proprietà o definire il contenuto che influisce sulla larghezza degli elementi in un GridViewoggetto , utilizzare le proprietà della GridView classe e le relative classi correlate, ad esempio GridViewColumn.
Per altre informazioni su come usare GridView e sulle relative classi di supporto, vedere Panoramica di GridView.
Se si definisce un ItemContainerStyle oggetto per un ListView controllo e si definisce anche un ItemTemplateoggetto , è necessario includere un ContentPresenter oggetto nello stile affinché funzioni ItemTemplate correttamente.
Non utilizzare le proprietà e VerticalContentAlignment per ListView il HorizontalContentAlignment contenuto visualizzato da un oggetto GridView. Per specificare l'allineamento del contenuto in una colonna di un GridViewoggetto , definire un oggetto CellTemplate.
Condivisione della stessa modalità di visualizzazione
Due ListView controlli non possono condividere contemporaneamente la stessa modalità di visualizzazione. Se si tenta di usare la stessa modalità di visualizzazione con più controlli ListView , si verifica un'eccezione.
Per specificare una modalità di visualizzazione che può essere usata simultaneamente da più di un ListViewoggetto , usare modelli o stili.
Creazione di una modalità di visualizzazione personalizzata
Le visualizzazioni personalizzate come GridView sono derivate dalla ViewBase classe astratta, che fornisce gli strumenti per visualizzare gli elementi di dati rappresentati come ListViewItem oggetti.
Informazioni di riferimento sul codice
In questo articolo viene fatto riferimento agli oggetti seguenti:
EmployeeInfoDataSource
raccolta dati. Se si usa Visual Basic .NET, l'elementoWindow
viene dichiarato leggermente diverso da quello visualizzato nel codice di esempio:<Window x:Class="SDKSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="OnLoad" xmlns:ds="clr-namespace:SDKSample"> <Window.Resources> <ObjectDataProvider x:Key="EmployeeInfoDataSource" ObjectType="{x:Type ds:myEmployees}" /> </Window.Resources>
EmployeeInfo
classe , utilizzata come tipo per laEmployeeInfoDataSource
raccolta di dati.public class EmployeeInfo { private string _firstName; private string _lastName; private string _employeeNumber; public string FirstName { get {return _firstName;} set {_firstName = value;} } public string LastName { get {return _lastName;} set {_lastName = value;} } public string EmployeeNumber { get {return _employeeNumber;} set {_employeeNumber = value;} } public EmployeeInfo(string firstname, string lastname, string empnumber) { _firstName = firstname; _lastName = lastname; _employeeNumber = empnumber; } }
Public Class EmployeeInfo Private _firstName As String Private _lastName As String Private _employeeNumber As String Public Property FirstName() As String Get Return _firstName End Get Set(ByVal value As String) _firstName = value End Set End Property Public Property LastName() As String Get Return _lastName End Get Set(ByVal value As String) _lastName = value End Set End Property Public Property EmployeeNumber() As String Get Return _employeeNumber End Get Set(ByVal value As String) _employeeNumber = value End Set End Property Public Sub New(ByVal firstname As String, ByVal lastname As String, ByVal empnumber As String) _firstName = firstname _lastName = lastname _employeeNumber = empnumber End Sub End Class
Vedi anche
.NET Desktop feedback