Partilhar via


Como classificar e agrupar dados usando um modo de exibição em XAML

Este exemplo mostra como criar uma exibição de uma coleção de dados em Extensible Application Markup Language (XAML). As visualizaçõ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 places é definido como uma coleção de objetos Place, na qual cada objeto Place é composto por um nome de cidade e o estado. O prefixo src é mapeado para o namespace onde a fonte de dados Places é 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 que é 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 vista pode então ser uma fonte de dados ligada, 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 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>

Ver também