Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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, vous pouvez afficher des éléments de données dans une table et trier ses colonnes.
Les ListView dérives 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.
Note
Les types référencés dans cet article sont disponibles dans la section Référence du code .
Le tableau suivant répertorie les tâches courantes pour l’utilisation du contrôle ListView :
| Titre | Descriptif |
|---|---|
| Trier une colonne de GridView lorsque l'en-tête est cliqué | Découvrez comment trier une colonne GridView lorsqu’un en-tête est cliqué. |
| Créer un mode d’affichage personnalisé pour un ListView | Découvrez comment créer un mode d’affichage personnalisé pour un ListView. |
| Utiliser des modèles pour styler un ListView qui utilise GridView | Découvrez comment utiliser des modèles pour mettre en forme un ListView qui utilise GridView. |
| Créer un style pour un en-tête de colonne GridView déplacé | Découvrez comment créer un style pour un en-tête de colonne GridView déplacé. |
| Afficher le contenu listView à l’aide d’un GridView | Découvrez comment afficher le contenu ListView à l’aide d’un GridView. |
| Utiliser des déclencheurs pour styler les éléments sélectionnés dans un ListView | Découvrez comment utiliser des déclencheurs pour styler les éléments sélectionnés dans un ListView. |
| Créer ListViewItems avec un CheckBox | Découvrez comment créer ListViewItems avec un CheckBox. |
| Afficher des données à l’aide de GridViewRowPresenter | Découvrez comment afficher des données à l’aide de GridViewRowPresenter. |
| Regrouper des éléments dans un ListView qui implémente un GridView | Découvrez comment regrouper des éléments dans un ListView qui implémente un GridView. |
| Style d’une ligne dans un ListView qui implémente un GridView | Découvrez comment mettre en forme une ligne dans un ListView qui implémente un GridView. |
| Modifier l’alignement horizontal d’une colonne dans un ListView | Découvrez comment modifier l’alignement horizontal d’une colonne dans un ListView. |
| Gérer l’événement MouseDoubleClick pour chaque élément dans un ListView | Découvrez comment gérer l’événement MouseDoubleClick pour chaque élément d’un ListView. |
Styles et modèles
Vous pouvez modifier la valeur par défaut ControlTemplate pour donner au contrôle une apparence unique. Pour plus d’informations, consultez Quels sont les styles et les modèles ? et Comment créer un modèle pour un contrôle.
Content, propriété
Le ListView contrôle utilise la Items propriété comme propriété de contenu. Cette propriété vous permet de spécifier les éléments affichés dans le contrôle.
Pièces
Le ListView contrôle ne définit aucune partie de modèle nommée.
Lorsque vous créez un ControlTemplate pour un modèle ListView, votre modèle peut contenir un ItemsPresenter dans un ScrollViewer.
ItemsPresenter affiche chaque élément dans le ListView; le ScrollViewer permet de faire défiler le contrôle. Si le ItemsPresenter n’est pas l’enfant direct du ScrollViewer, vous devez donner au ItemsPresenter le nom ItemsPresenter.
États visuels
Le tableau suivant répertorie les états visuels du ListView contrôle.
| Nom VisualState | Nom du VisualStateGroup | Descriptif |
|---|---|---|
| Valide | ValidationStates | Le contrôle est valide et n’a aucune erreur de validation. |
| NonValideConcentré | ValidationStates | Le contrôle a une erreur de validation et a le focus clavier. |
| InvalideNonFocalisé | ValidationStates | Le contrôle a une erreur de validation, mais n'est pas focalisé au clavier. |
Le tableau suivant répertorie les états du ListViewItem contrôle.
| Nom VisualState | Nom du VisualStateGroup | Descriptif |
|---|---|---|
| Normale | CommonStates | État par défaut. |
| Disabled | CommonStates | Le contrôle est désactivé. |
| Survol de la souris | CommonStates | Le pointeur de la souris est sur l'élément de contrôle. |
| Focused | FocusStates | Le contrôle a le focus du clavier. |
| Floue | FocusStates | L'élément de contrôle n’a pas le focus du clavier. |
| Sélectionnée | ÉtatsDeSélection | L’élément est actuellement sélectionné. |
| Non sélectionné | ÉtatsDeSélection | L’élément n’est pas sélectionné. |
| SélectionnéNonFocalisé | ÉtatsDeSélection | L’élément est sélectionné, mais n’a pas le focus du clavier. |
| Valide | ValidationStates | Le contrôle est valide et n’a aucune erreur de validation. |
| NonValideConcentré | ValidationStates | Le contrôle a une erreur de validation et a le focus clavier. |
| InvalideNonFocalisé | ValidationStates | Le contrôle a une erreur de validation, mais n'est pas focalisé au clavier. |
Modes d’affichage
Pour spécifier un mode d’affichage pour le contenu d’un ListView contrôle, 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 GridView pour un contrôle ListView 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>
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 Créer un mode d’affichage personnalisé pour un ListView.
Modes d’affichage pour partage
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 plus d’un ListView, utilisez des modèles ou des styles.
Liaison de données
Utilisez les propriétés Items et ItemsSource pour spécifier des éléments pour un contrôle ListView. 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 GridView, les objets GridViewColumn sont liés à des champs de données spécifiés. L’exemple suivant lie un objet GridViewColumn à un champ de données en spécifiant une Binding pour la propriété DisplayMemberBinding.
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 un Binding dans le cadre d'une définition DataTemplate que vous utilisez pour mettre en forme les cellules d'une colonne. Dans l’exemple suivant, le DataTemplate désigné par un ResourceKey définit le Binding pour un GridViewColumn. Notez que cet exemple ne définit pas le DisplayMemberBinding parce que cela prend le pas sur le 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}"/>
Mise en forme des contrôles ListView
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 propriétés ItemTemplate, ItemTemplateSelector et ItemContainerStyle.
- Sur le ListViewItem contrôle, utilisez les propriétés ContentTemplate et ContentTemplateSelector.
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 de GridView et ses classes associées, consultez Vue d’ensemble de GridView.
Lorsque vous définissez un contrôle ListViewItemContainerStyle et que vous spécifiez également un ItemTemplate, vous devez inclure un ContentPresenter dans le style pour que ItemTemplate fonctionne correctement.
N'utilisez pas les propriétés HorizontalContentAlignment et VerticalContentAlignment pour le contenu ListView affiché par un GridView. Pour spécifier l’alignement du contenu dans une colonne d’un GridView, définissez un CellTemplate.
Référence de code
Les objets suivants sont référencés dans cet article :
EmployeeInfoDataSourcecollecte de données. Si vous utilisez Visual Basic .NET, l’élémentWindowest 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>EmployeeInfoclasse, qui est utilisée comme type pour laEmployeeInfoDataSourcecollecte 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
- GridView
- ItemContainerStyle
- Items
- ItemsSource
- ItemTemplate
- ItemTemplateSelector
- ListView
- ListViewItem
- ViewBase
- Binding
- Contrôles
- Créer un mode d’affichage personnalisé pour un ListView
- Vue d’ensemble de la liaison de données
- Vue d’ensemble de la création de modèles de données
- Vue d’ensemble de GridView
.NET Desktop feedback