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