Share via


SortDescriptor-Klasse

Beschreibt ein Sortierungskriterium.

Namespace: System.Windows.Controls
Assembly: System.Windows.Controls.DomainServices (in system.windows.controls.domainservices.dll)

Verwendung

'Usage
Dim instance As SortDescriptor

Syntax

'Declaration
Public Class SortDescriptor
    Inherits DependencyObject
public class SortDescriptor : DependencyObject
public ref class SortDescriptor : public DependencyObject
public class SortDescriptor extends DependencyObject
public class SortDescriptor extends DependencyObject

Beispiel

Im folgenden Beispiel wird gezeigt, wie Sie der DomainDataSource einen Sortierdeskriptor hinzufügen. Die mit der Abfrage abgerufenen Daten werden nach Werten in der StandardCost-Eigenschaft sortiert.

<Grid x:Name="LayoutRoot" Background="White">
    <riaControls:DomainDataSource Name="source" QueryName="GetProducts" AutoLoad="true">
        <riaControls:DomainDataSource.DomainContext>
            <domain:ProductDomainContext />
        </riaControls:DomainDataSource.DomainContext>
        <riaControls:DomainDataSource.SortDescriptors>
            <riaControls:SortDescriptor PropertyPath="StandardCost" Direction="Ascending" />
            <riaControls:SortDescriptor PropertyPath="ProductID" Direction="Ascending" />
        </riaControls:DomainDataSource.SortDescriptors>
    </riaControls:DomainDataSource>
    <data:DataGrid ItemsSource="{Binding Data, ElementName=source}" />
</Grid>

Wenn Sie Paging und Sortierung zusammen implementieren, schließen Sie mindestens einen SortDescriptor mit ein, dessen PropertyPath-Attribut einer Eigenschaft zugewiesen wurde, die eindeutige Werte enthält, z. B. ein Primärschlüssel. Oder fügen Sie eine OrderBy-Klausel auf Grundlage einer Eigenschaft hinzu, die eindeutige Werte für Abfragen in DomainDataSource enthält. Wenn Sie die Daten nur mit einer Eigenschaft sortieren, die keine eindeutigen Werte enthält, können die Rückgabewerte über mehrere Seiten hinweg inkonsistente und lückenhafte Daten enthalten.

Beachten Sie z. B. die Werte in der folgenden Tabelle. Beachten Sie, dass die ID-Werte eindeutig sind, die Land-Werte jedoch nicht.

ID Land

1

GB

2

GB

3

US

4

GB

5

US

6

IT

7

GB

8

GB

9

US

10

SP

Wenn Sie Paging für diese Werte implementieren möchten, nach Land sortiert, können Sie zum Beispiel das folgende Markup verwenden:

<Grid x:Name="LayoutRoot">
    <ScrollViewer x:Name="PageScrollViewer" Style="{StaticResource PageScrollViewerStyle}">
        <StackPanel x:Name="ContentStackPanel">
            <TextBlock x:Name="HeaderText" Style="{StaticResource HeaderTextStyle}" 
                               Text="Home"/>
            <TextBlock x:Name="ContentText" Style="{StaticResource ContentTextStyle}" 
                               Text="Home page content"/>
            <riaControls:DomainDataSource Name="domainDataSource1" QueryName="GetCountriesQuery" PageSize="4">
                <riaControls:DomainDataSource.DomainContext>
                    <ds:TestDomainContext></ds:TestDomainContext>
                </riaControls:DomainDataSource.DomainContext>
                <riaControls:DomainDataSource.SortDescriptors>
                    <riaControls:SortDescriptor PropertyPath="Country" Direction="Ascending"></riaControls:SortDescriptor>
                    <riaControls:SortDescriptor PropertyPath="ID"></riaControls:SortDescriptor>
                </riaControls:DomainDataSource.SortDescriptors>
            </riaControls:DomainDataSource>
            <my:DataGrid ItemsSource="{Binding Data, ElementName=domainDataSource1}" />
            <my:DataPager PageSize="4" Source="{Binding Data, ElementName=domainDataSource1}" />
        </StackPanel>
    </ScrollViewer>
</Grid>

Hinweise

Die DomainDataSource-Klasse stellt die SortDescriptors-Auflistung bereit, um das Sortieren von Daten zu erleichtern. In der SortDescriptors-Auflistung fügen Sie SortDescriptor-Instanzen hinzu, die die Werte beschreiben, die zum Sortieren der Auflistung verwendet werden sollen. Sie können so viele SortDescriptor-Instanzen hinzufügen, wie Sie Ebenen der Sortierung bereitstellen möchten. Sie können angeben, ob die Daten in aufsteigender oder absteigender Reihenfolge sortiert werden.

Wenn Sie SortDescriptor programmgesteuert verwenden, prüfen Sie, ob die CanLoad-Eigenschaft true zurückgibt. Wenn Sie versuchen zu sortieren, obwohl CanLoadfalse zurückgibt, löst DomainDataSource eine Ausnahme für einen ungültigen Vorgang aus. Beim Sortieren wird ein Ladevorgang initiiert, und Ladevorgänge sind nicht erlaubt, wenn CanLoadfalse ist.

Vererbungshierarchie

System.Object
   System.Windows.DependencyObject
    System.Windows.Controls.SortDescriptor

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht sichergestellt.

Plattformen

Entwicklungsplattformen

Windows XP Home Edition, Windows XP Professional, Windows Server 2003 , Windows Server 2008 und Windows 2000

Zielplattformen

Change History

Siehe auch

Verweis

SortDescriptor-Member
System.Windows.Controls-Namespace