Freigeben über


Vorgehensweise: Sortieren und Gruppieren von Daten mithilfe einer Ansicht in XAML

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

Beispiel

Im folgenden Beispiel wird die statische Ressource mit dem Namen Orte als eine Auflistung von Place-Objekten definiert, in der jedes Place-Objekt aus einem Stadtnamen und dem Staat besteht. Das Präfix src wird dem Namespace zugeordnet, in dem die Datenquelle 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 gruppiert wird.

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