Procedura: ordinare e raggruppare i dati tramite una visualizzazione di XAML

Questo esempio mostra come creare una visualizzazione di una raccolta di dati in XAML (Extensible Application Markup Language). Le visualizzazioni consentono le funzionalità di raggruppamento, ordinamento, filtro e nozione di elemento corrente.

Esempio

Nell'esempio seguente la risorsa statica denominata places viene definita come una raccolta di oggetti Place , in cui ogni oggetto Place è costituito da un nome di città e dallo stato. Il prefisso src viene mappato allo spazio dei nomi in cui è definita l'origine dati Posizioni . Il prefisso scm esegue il mapping a "clr-namespace:System.ComponentModel;assembly=WindowsBase" e dat esegue il mapping a "clr-namespace:System.Windows.Data;assembly=PresentationFramework".

Nell'esempio seguente viene creata una visualizzazione della raccolta dati ordinata in base al nome della città e raggruppata in base allo stato.

<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 può quindi essere un'origine di associazione, come nell'esempio seguente:

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

Per le associazioni ai dati XML definiti in una XmlDataProvider risorsa, precedere il nome XML con un simbolo @.

<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>

Vedi anche