Vue d'ensemble de ListViewListView Overview

Le ListView contrôle fournit l’infrastructure pour afficher un ensemble d’éléments de données dans différentes dispositions ou différents affichages.The ListView control provides the infrastructure to display a set of data items in different layouts or views. Par exemple, un utilisateur peut souhaiter afficher des éléments de données dans un tableau et en trier les colonnes.For example, a user may want to display data items in a table and also to sort its columns.

Qu’est qu’un contrôle ListView ?What Is a ListView?

Le ListView contrôle est un ItemsControl qui est dérivée de ListBox.The ListView control is an ItemsControl that is derived from 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 que ListViewItem objets.Typically, its items are members of a data collection and are represented as ListViewItem objects. Un ListViewItem est un ContentControl et peut contenir uniquement un seul élément enfant.A ListViewItem is a ContentControl and can contain only a single child element. Toutefois, cet élément enfant peut être n’importe quel élément visuel.However, that child element can be any visual element.

Définition d’un mode d’affichage pour un ListViewDefining a View Mode for a ListView

Pour spécifier un mode d’affichage pour le contenu d’un ListView contrôle, vous définissez le View propriété.To specify a view mode for the content of a ListView control, you set the View property. Mode d’affichage qui Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) fournit est GridView, qui affiche une collection d’éléments de données dans une table qui comporte des colonnes personnalisables.One view mode that Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) provides is GridView, which displays a collection of data items in a table that has customizable columns.

L’exemple suivant montre comment définir un GridView pour un ListView contrôle qui affiche des informations sur les employés.The following example shows how to define a GridView for a ListView control that displays employee information.


<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.The following illustration shows how the data appears for the previous example.

Capture d’écran montrant un ListView avec GridView sortie.

Vous pouvez créer un mode d’affichage personnalisé en définissant une classe qui hérite de la ViewBase classe.You can create a custom view mode by defining a class that inherits from the ViewBase class. Le ViewBase classe fournit l’infrastructure dont vous avez besoin pour créer une vue personnalisée.The ViewBase class provides the infrastructure that you need to create a custom view. 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.For more information about how to create a custom view, see Create a Custom View Mode for a ListView.

Liaison des données à un contrôle ListViewBinding Data to a ListView

Utilisez le Items et ItemsSource propriétés pour spécifier des éléments pour un ListView contrôle.Use the Items and ItemsSource properties to specify items for a ListView control. L’exemple suivant définit la ItemsSource propriété à une collection de données qui est appelée EmployeeInfoDataSource.The following example sets the ItemsSource property to a data collection that is called EmployeeInfoDataSource.

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

Dans un GridView, GridViewColumn objets lier à des champs de données spécifié.In a GridView, GridViewColumn objects bind to specified data fields. L’exemple suivant lie un GridViewColumn objet à un champ de données en spécifiant un Binding pour le DisplayMemberBinding propriété.The following example binds a GridViewColumn object to a data field by specifying a Binding for the DisplayMemberBinding property.

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 en tant que partie d’un DataTemplate définition que vous utilisez pour définir le style des cellules dans une colonne.You can also specify a Binding as part of a DataTemplate definition that you use to style the cells in a column. Dans l’exemple suivant, le DataTemplate qui est identifié avec un ResourceKey définit le Binding pour un GridViewColumn.In the following example, the DataTemplate that is identified with a ResourceKey sets the Binding for a GridViewColumn. Notez que cet exemple ne définit pas le DisplayMemberBinding , car cette opération remplace par conséquent, la liaison est spécifiée par DataTemplate.Note that this example does not define the DisplayMemberBinding because doing so overrides the binding that is specified by DataTemplate.

<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 GridViewStyling a ListView That Implements a GridView

Le ListView contrôle contient ListViewItem objets qui représentent les éléments de données qui sont affichés.The ListView control contains ListViewItem objects, which represent the data items that are displayed. Vous pouvez utiliser les propriétés suivantes pour définir le contenu et le style des éléments de données :You can use the following properties to define the content and style of data items:

Pour éviter les problèmes d’alignement entre les cellules d’un GridView, n’utilisez pas le ItemContainerStyle pour définir des propriétés ou ajouter du contenu qui affecte la largeur d’un élément dans un ListView.To avoid alignment issues between cells in a GridView, do not use the ItemContainerStyle to set properties or add content that affects the width of an item in a ListView. Par exemple, un problème d’alignement peut se produire lorsque vous définissez la Margin propriété dans le ItemContainerStyle.For example, an alignment issue can occur when you set the Margin property in the ItemContainerStyle. Pour spécifier des propriétés ou définir le contenu qui affecte la largeur des éléments dans un GridView, utilisez les propriétés de la GridView classe et ses classes connexes, tels que GridViewColumn.To specify properties or define content that affects the width of items in a GridView, use the properties of the GridView class and its related classes, such as GridViewColumn.

Pour plus d’informations sur l’utilisation GridView et ses classes de prise en charge, consultez vue d’ensemble de GridView.For more information about how to use GridView and its supporting classes, see GridView Overview.

Si vous définissez un ItemContainerStyle pour un ListView contrôlent et définissent un ItemTemplate, vous devez inclure un ContentPresenter dans le style afin que le ItemTemplate fonctionne correctement.If you define an ItemContainerStyle for a ListView control and also define an ItemTemplate, you must include a ContentPresenter in the style in order for the ItemTemplate to work correctly.

N’utilisez pas le HorizontalContentAlignment et VerticalContentAlignment propriétés pour ListView contenu qui est affiché à l’aide un GridView.Do not use the HorizontalContentAlignment and VerticalContentAlignment properties for ListView content that is displayed by using a GridView. Pour spécifier l’alignement du contenu dans une colonne d’un GridView, définir un CellTemplate.To specify the alignment of content in a column of a GridView, define a CellTemplate.

Partage du mode d’affichageSharing the Same View Mode

Deux ListView contrôles ne peuvent pas partager le même mode d’affichage en même temps.Two ListView controls cannot share the same view mode at the same time. Si vous essayez d’utiliser le même mode d’affichage avec plusieurs ListView contrôler, une exception se produit.If you try to use the same view mode with more than one ListView control, an exception occurs.

Pour spécifier un mode d’affichage qui peut être utilisé simultanément par plusieurs ListView, utilisez des modèles ou des styles.To specify a view mode that can be simultaneously used by more than one ListView, use templates or styles.

Créer un mode d’affichage personnaliséCreating a Custom View Mode

Affichages personnalisés tels que GridView sont dérivés de la ViewBase classe, qui fournit les outils pour afficher les éléments de données qui sont représentées sous forme abstraite ListViewItem objets.Customized views like GridView are derived from the ViewBase abstract class, which provides the tools to display data items that are represented as ListViewItem objects.

Voir aussiSee also