Gewusst wie: Sortieren und Gruppieren von Daten mit einer Ansicht in XAML

In diesem Beispiel wird gezeigt, wie Sie eine Ansicht einer Datensammlung in XAML (Extensible Application Markup Language) erstellen. Ansichten ermöglichen die Funktionen wie das Gruppieren, Sortieren und Filtern sowie das Kennzeichnen des aktuellen Elements.

Beispiel

Im folgenden Beispiel wird die statische Ressource places als eine Auflistung von Place-Objekten definiert, in der jedes Place-Objekt aus einem Ortsnamen und dem Bundesland/Kanton besteht. Das Präfix src wird dem Namespace zugeordnet, in dem die Datenquelle für Places definiert ist. Das Präfix scm ist "clr-namespace:System.ComponentModel;assembly=WindowsBase" und dat ist "clr-namespace:System.Windows.Data;assembly=PresentationFramework" zugeordnet.

Im folgenden Beispiel wird eine Ansicht der Datensammlung erstellt, die nach dem Ortsnamen sortiert und nach dem Bundesland/Kanton gruppiert ist.

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

Die Ansicht kann dann wie im folgenden Beispiel als Bindungsquelle verwendet werden:

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

Für Bindungen an XML-Daten, die in einer XmlDataProvider-Ressource definiert sind, stellen Sie dem XML-Namen das Symbol „@“ voran.

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

Weitere Informationen