Información general sobre ListViewListView Overview

El ListView control proporciona la infraestructura para mostrar un conjunto de elementos de datos en distintos diseños o vistas.The ListView control provides the infrastructure to display a set of data items in different layouts or views. Por ejemplo, es posible que un usuario quiera mostrar elementos de datos en una tabla y, además, ordenar las columnas.For example, a user may want to display data items in a table and also to sort its columns.

¿Qué es ListView?What Is a ListView?

El ListView control es un ItemsControl que se deriva ListBox.The ListView control is an ItemsControl that is derived from ListBox. Normalmente, sus elementos son miembros de una colección de datos y se representan como ListViewItem objetos.Typically, its items are members of a data collection and are represented as ListViewItem objects. Un ListViewItem es un ContentControl y puede contener sólo un único elemento secundario.A ListViewItem is a ContentControl and can contain only a single child element. Sin embargo, el elemento secundario puede ser cualquier elemento visual.However, that child element can be any visual element.

Definición de un modo de vista para ListViewDefining a View Mode for a ListView

Para especificar un modo de vista para el contenido de un ListView control, Establece el View propiedad.To specify a view mode for the content of a ListView control, you set the View property. Un modo de vista que Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) proporciona es GridView, que muestra una colección de elementos de datos en una tabla con columnas personalizables.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.

El ejemplo siguiente muestra cómo definir un GridView para un ListView control que muestra información de empleado.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>

En la ilustración siguiente se muestra cómo aparecen los datos en el ejemplo anterior.The following illustration shows how the data appears for the previous example.

Captura de pantalla que muestra un ListView con resultado GridView.

Puede crear un modo de vista personalizado mediante la definición de una clase que hereda de la ViewBase clase.You can create a custom view mode by defining a class that inherits from the ViewBase class. La ViewBase clase proporciona la infraestructura que necesita para crear una vista personalizada.The ViewBase class provides the infrastructure that you need to create a custom view. Para más información sobre cómo crear una vista personalizada, consulte Creación de un modo de vista personalizada para un control ListView.For more information about how to create a custom view, see Create a Custom View Mode for a ListView.

Enlace de datos a un control ListViewBinding Data to a ListView

Use la Items y ItemsSource propiedades para especificar elementos de un ListView control.Use the Items and ItemsSource properties to specify items for a ListView control. El ejemplo siguiente se establece la ItemsSource propiedad en una recopilación de datos que se denomina EmployeeInfoDataSource.The following example sets the ItemsSource property to a data collection that is called EmployeeInfoDataSource.

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

En un GridView, GridViewColumn enlazan objetos a los campos de datos especificado.In a GridView, GridViewColumn objects bind to specified data fields. En el ejemplo siguiente se enlaza un GridViewColumn objeto a un campo de datos especificando un Binding para el DisplayMemberBinding propiedad.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"/>

También puede especificar un Binding como parte de un DataTemplate definición que usar para definir el estilo de las celdas de una columna.You can also specify a Binding as part of a DataTemplate definition that you use to style the cells in a column. En el ejemplo siguiente, la DataTemplate que se identifica con un ResourceKey establece la Binding para un GridViewColumn.In the following example, the DataTemplate that is identified with a ResourceKey sets the Binding for a GridViewColumn. Tenga en cuenta que este ejemplo no define el DisplayMemberBinding porque si lo hace por lo que invalida el enlace especificado por 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}"/>

Aplicación de un estilo a un control ListView que implementa GridViewStyling a ListView That Implements a GridView

El ListView control contiene ListViewItem objetos que representan los elementos de datos que se muestran.The ListView control contains ListViewItem objects, which represent the data items that are displayed. Puede usar las propiedades siguientes para definir el contenido y el estilo de los elementos de datos:You can use the following properties to define the content and style of data items:

Para evitar problemas de alineación entre las celdas de un GridView, no use la ItemContainerStyle para establecer las propiedades o agregar contenido que afecta al ancho de un elemento en 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. Por ejemplo, puede producirse un problema de alineación cuando configuró el Margin propiedad en el ItemContainerStyle.For example, an alignment issue can occur when you set the Margin property in the ItemContainerStyle. Para especificar propiedades o definir el contenido que afecta al ancho de los elementos de un GridView, utilice las propiedades de la GridView clase y sus clases relacionadas, como 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.

Para obtener más información sobre cómo usar GridView y sus clases auxiliares, consulte información general sobre GridView.For more information about how to use GridView and its supporting classes, see GridView Overview.

Si define un ItemContainerStyle para un ListView controlar y definir también una ItemTemplate, debe incluir un ContentPresenter en el estilo para el ItemTemplate funcione correctamente.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.

No utilice el HorizontalContentAlignment y VerticalContentAlignment las propiedades de ListView contenido que se muestra mediante el uso de un GridView.Do not use the HorizontalContentAlignment and VerticalContentAlignment properties for ListView content that is displayed by using a GridView. Para especificar la alineación del contenido de una columna de un GridView, defina un CellTemplate.To specify the alignment of content in a column of a GridView, define a CellTemplate.

Uso compartido del mismo modo de vistaSharing the Same View Mode

Dos ListView controles no pueden compartir el mismo modo de vista al mismo tiempo.Two ListView controls cannot share the same view mode at the same time. Si intenta usar el mismo modo de vista con más de un ListView controlar, se produce una excepción.If you try to use the same view mode with more than one ListView control, an exception occurs.

Para especificar un modo de vista que se puede usar simultáneamente más de un ListView, use plantillas o estilos.To specify a view mode that can be simultaneously used by more than one ListView, use templates or styles.

Creación de un modo de vista personalizadoCreating a Custom View Mode

Personalizar las vistas como GridView se derivan de la ViewBase clase, que proporciona las herramientas para mostrar los elementos de datos que se representan como abstracta ListViewItem objetos.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.

Vea tambiénSee also