Partager via


Classe SortDescriptor

Décrit un critère de tri.

Espace de noms: System.Windows.Controls
Assembly : System.Windows.Controls.DomainServices (dans system.windows.controls.domainservices.dll)

Utilisation

'Utilisation
Dim instance As SortDescriptor

Syntaxe

'Déclaration
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

Exemple

L'exemple suivant montre comment ajouter un descripteur de tri à DomainDataSource. Les données récupérées à partir de la requête sont triées par valeurs dans la propriété StandardCost.

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

Lorsque vous implémentez ensemble la pagination et le tri, incluez au moins un SortDescriptor avec son attribut PropertyPath assigné à une propriété qui contient des valeurs uniques, telles qu'une clé primaire. Ou ajoutez une clause OrderBy basée sur une propriété qui contient des valeurs uniques à la requête dans DomainDataSource. Si vous triez seulement les données sur une propriété qui ne contient pas de valeurs uniques, les valeurs de retour pourraient contenir des données incohérentes ou manquantes à travers des pages.

Examinons, par exemple, les valeurs dans le tableau suivant. Notez que les valeurs ID sont uniques, mais que les valeurs Country ne le sont pas.

ID Country

1

UK

2

UK

3

US

4

UK

5

US

6

IT

7

UK

8

UK

9

US

10

SP

Si vous voulez implémenter la pagination pour ces valeurs, triées sur Country, vous pouvez utiliser le balisage suivant :

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

Notes

La classe DomainDataSource fournit la collection SortDescriptors pour faciliter le tri de données. Dans la collection SortDescriptors, vous ajoutez des instances de SortDescriptor qui décrivent les valeurs à utiliser pour le tri de la collection. Vous pouvez ajouter autant d'instances de SortDescriptor que vous le souhaitez pour fournir des couches de tri. Vous pouvez spécifier si les données sont triées en ordre croissant ou décroissant.

Si vous utilisez SortDescriptor par programme, vérifiez que la propriété CanLoad retourne true. Toute tentative de tri quand CanLoad retourne false entraîne la levée d'une exception d'opération non valide par DomainDataSource. Le trie initie une opération de chargement, et les opérations de chargement ne sont pas autorisées quand CanLoad a la valeur false.

Hiérarchie d'héritage

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

Sécurité des threads

Tous les membres publics statiques (Partagés dans Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Plateformes

Plateformes de développement

Windows XP Édition familiale, Windows XP Professionnel, Windows Server 2003 , Windows Server 2008 et Windows 2000

Plateformes cibles

Change History

Voir aussi

Référence

Membres SortDescriptor
Espace de noms System.Windows.Controls