Como organizar 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). Modos de exibição 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 consiste em um nome de cidade e o estado. O prefixo src é mapeado para o namespace no qual a fonte de dados Places está 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 por nome de cidade e agrupada por 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>

Em seguida, o modo de exibição, pode ser uma origem da associaçã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, preceda o nome XML com um XmlDataProvider 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>

Confira também