Compartir a través de


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

En este ejemplo se muestra cómo crear una vista de una colección de datos en lenguaje de marcado extensible de aplicaciones (XAML). Las vistas permiten las funcionalidades de agrupación, ordenación, filtrado y noción de un elemento actual.

Ejemplo

En el ejemplo siguiente, el recurso estático denominado places se define como una colección de objetos Place , en el que cada objeto Place está formado por un nombre de ciudad y el estado. El prefijo src se asigna al espacio de nombres donde se definen los lugares del origen de datos. 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 colecció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>

A continuación, la vista puede ser 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 XmlDataProvider recurso, precede al nombre XML con un símbolo @ .

<XmlDataProvider x:Key="myTasks" XPath="Tasks/Task">
    <x:XData>
        <Tasks xmlns="">
            <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>

Consulte también