Vue d’ensemble de ListView
Le ListView contrôle fournit l’infrastructure pour afficher un ensemble d’éléments de données à l’aide d’une disposition ou d’une vue différente. Par exemple, un utilisateur peut souhaiter afficher des éléments de données dans un tableau et en trier les colonnes.
Remarque
Les types référencés dans cet article sont disponibles dans la section Référence du code.
Qu’est qu’un contrôle ListView ?
ListView dérive de ListBox. En règle générale, ses éléments sont membres d’une collection de données et sont représentés en tant qu’objets ListViewItem . A ListViewItem est un ContentControl et ne peut contenir qu’un seul élément enfant. Toutefois, cet élément enfant peut être n’importe quel élément visuel.
Définition d’un mode d’affichage pour un ListView
Pour spécifier un mode d’affichage pour le contenu d’un ListView contrôle, vous définissez la View propriété. Un mode d’affichage fourni par Windows Presentation Foundation (WPF) est GridView, qui affiche une collection d’éléments de données dans une table qui a des colonnes personnalisables.
L’exemple suivant montre comment définir un GridViewListView contrôle qui affiche des informations sur les employés.
<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>
L’illustration suivante montre le tableau créé par l’exemple précédent.
Vous pouvez créer un mode d’affichage personnalisé en définissant une classe qui hérite de la ViewBase classe. La ViewBase classe fournit l’infrastructure dont vous avez besoin pour créer une vue personnalisée. Pour plus d’informations sur la création d’un affichage personnalisé, consultez la page Créer un mode d’affichage personnalisé pour un ListView.
Liaison des données à un contrôle ListView
Utilisez les propriétés et ItemsSource les Items propriétés pour spécifier des éléments pour un ListView contrôle. L’exemple suivant définit la ItemsSource propriété sur une collection de données appelée EmployeeInfoDataSource
.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
Dans un GridViewobjet , GridViewColumn les objets sont liés à des champs de données spécifiés. L’exemple suivant lie un GridViewColumn objet à un champ de données en spécifiant une BindingDisplayMemberBinding propriété.
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"/>
Vous pouvez également spécifier une Binding définition DataTemplate que vous utilisez pour mettre en forme les cellules d’une colonne. Dans l’exemple suivant, l’identification DataTemplate avec un ResourceKey jeu pour Binding un GridViewColumn. Notez que cet exemple ne définit pas la DisplayMemberBinding valeur car cela est prioritaire 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}"/>
Appliquer un style à un ListView implémentant un GridView
Le ListView contrôle contient des ListViewItem objets, qui représentent les éléments de données affichés. Vous pouvez utiliser les propriétés suivantes pour définir le contenu et le style des éléments de données :
Sur le ListView contrôle, utilisez les ItemTemplatepropriétés , ItemTemplateSelectoret ItemContainerStyle les propriétés.
Sur le ListViewItem contrôle, utilisez les propriétés et ContentTemplateSelector les ContentTemplate propriétés.
Pour éviter les problèmes d’alignement entre les cellules d’un GridView, n’utilisez pas les ItemContainerStyle propriétés pour définir des propriétés ou ajouter du contenu qui affecte la largeur d’un élément dans un ListView. Par exemple, un problème d’alignement peut se produire lorsque vous définissez la Margin propriété dans le ItemContainerStyle. Pour spécifier des propriétés ou définir du contenu qui affecte la largeur des éléments dans un GridView, utilisez les propriétés de la GridView classe et ses classes associées, telles que GridViewColumn.
Pour plus d’informations sur l’utilisation GridView et ses classes de prise en charge, consultez La vue d’ensemble de GridView.
Si vous définissez un ItemContainerStyleListView contrôle et définissez également un ItemTemplate, vous devez inclure un ContentPresenter dans le style pour que le ItemTemplate travail fonctionne correctement.
N’utilisez pas les propriétés et VerticalContentAlignment les propriétés pour ListView le HorizontalContentAlignment contenu affiché par un GridView. Pour spécifier l’alignement du contenu dans une colonne d’un GridView, définissez un CellTemplate.
Partage du mode d’affichage
Deux ListView contrôles ne peuvent pas partager le même mode d’affichage en même temps. Si vous essayez d’utiliser le même mode d’affichage avec plusieurs ListView contrôles, une exception se produit.
Pour spécifier un mode d’affichage qui peut être utilisé simultanément par plusieurs ListViewmodèles ou styles.
Créer un mode d’affichage personnalisé
Les vues personnalisées comme GridView celles-ci sont dérivées de la ViewBase classe abstraite, qui fournit les outils permettant d’afficher les éléments de données représentés en tant qu’objets ListViewItem .
Informations de référence sur le code
Les objets suivants sont référencés dans cet article :
EmployeeInfoDataSource
collecte de données. Si vous utilisez Visual Basic .NET, l’élémentWindow
est déclaré légèrement différent de ce que vous voyez dans l’exemple de code :<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, qui est utilisée comme type pour laEmployeeInfoDataSource
collecte de données.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
Voir aussi
.NET Desktop feedback