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