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

Actualización: noviembre 2007

En este ejemplo se muestra cómo crear una vista de una recolección de datos en Lenguaje de marcado de aplicaciones extensible (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. Los prefijos scm y dat se asignan a los espacios de nombres System.ComponentModel y System.Windows.Data respectivamente.

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>

Para ver el ejemplo completo, vea Ejemplo Sorting and Grouping Data in XAML.

Vea también

Tareas

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

Conceptos

Información general sobre el enlace de datos

Referencia

CollectionViewSource

Otros recursos

Ejemplos de enlace de datos

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