Cómo: Ordenar y agrupar datos mediante una vista en XAML

En este ejemplo se muestra cómo crear una vista de una recolección de datos en Extensible Application Markup Language (XAML). Las vistas aportan las funcionalidades de agrupar, ordenar, filtrar y la noción de un elemento actual.

Ejemplo

En el ejemplo siguiente, se define el recurso estático denominado places como una colección de objetos Place, en la que cada objeto Place consta de un nombre de ciudad y su estado. El prefijo src se asigna al espacio de nombres donde se define el origen de datos Places. El prefijo scm se asigna a "clr-namespace:System.ComponentModel;assembly=WindowsBase" y dat se asigna a "clr-namespace:System.Windows.Data;assembly=PresentationFramework".

En el ejemplo siguiente se crea una vista de la recolección de datos ordenada por el nombre de la ciudad y agrupada por el estado.

  <Window.Resources>

    <src:Places x:Key="places"/>

    <CollectionViewSource Source="{StaticResource places}" x:Key="cvs">
      <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="CityName"/>
      </CollectionViewSource.SortDescriptions>
      <CollectionViewSource.GroupDescriptions>
        <dat:PropertyGroupDescription PropertyName="State"/>
      </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>

La vista puede ser entonces un origen de enlace, como en el ejemplo siguiente:

<ListBox ItemsSource="{Binding Source={StaticResource cvs}}"
         DisplayMemberPath="CityName" Name="lb">
  <ListBox.GroupStyle>
    <x:Static Member="GroupStyle.Default"/>
  </ListBox.GroupStyle>
</ListBox>

Para los enlaces a datos XML definidos en un recurso XmlDataProvider, coloque el símbolo @ delante del nombre XML.

<XmlDataProvider x:Key="myTasks" XPath="Tasks/Task">
    <x:XData>
        <Tasks >
            <Task Name="Groceries" Priority="2" Type="Home">
<CollectionViewSource x:Key="mySortedTasks"
                      Source="{StaticResource myTasks}">
    <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="@Priority" />
    </CollectionViewSource.SortDescriptions>
    <CollectionViewSource.GroupDescriptions>
        <dat:PropertyGroupDescription PropertyName="@Priority" />
    </CollectionViewSource.GroupDescriptions>
</CollectionViewSource>

Vea también

Tareas

Cómo: Obtener la vista predeterminada de una recolección de datos

Referencia

CollectionViewSource

Conceptos

Información general sobre el enlace de datos

Otros recursos

Temas "Cómo..." sobre enlace de datos

Historial de cambios

Fecha

Historial

Motivo

Julio de 2010

Se han agregado cadenas literales para los prefijos scm y dat.

Comentarios de los clientes.