Compartilhar via


Como classificar e agrupar dados usando uma exibição em XAML

Este exemplo mostra como criar uma exibição de uma coleção de dados em XAML (Extensible Application Markup Language). As exibições permitem as funcionalidades de agrupamento, classificação, filtragem e a noção de um item atual.

Exemplo

No exemplo a seguir, o recurso estático chamado locais é definido como uma coleção de objetos Place, nos quais cada objeto Place consiste em um nome de cidade e o estado. O prefixo src é mapeado para o namespace no qual a fonte de dados Locais é definida. O prefixo scm mapeia para "clr-namespace:System.ComponentModel;assembly=WindowsBase" e dat mapeia para "clr-namespace:System.Windows.Data;assembly=PresentationFramework".

O exemplo a seguir cria uma exibição da coleta de dados classificada pelo nome da cidade e agrupada pelo 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 visualização pode então ser uma fonte de vinculação, como no exemplo a seguir:

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

Para associações a dados XML definidos em um recurso de XmlDataProvider, preceda o nome XML com um 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 também