Condividi tramite


Classe SortDescriptor

Descrive un criterio di ordinamento.

Spazio dei nomi: System.Windows.Controls
Assembly: System.Windows.Controls.DomainServices (in system.windows.controls.domainservices.dll)

Utilizzo

'Utilizzo
Dim instance As SortDescriptor

Sintassi

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

Esempio

Nell'esempio seguente viene illustrato come aggiungere un descrittore di ordinamento all'oggetto DomainDataSource. I dati recuperati dalla query vengono ordinati in base ai valori nella proprietà 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>

Quando si implementano operazioni di paging e ordinamento contemporaneamente, includere almeno un oggetto SortDescriptor con il relativo attributo PropertyPath assegnato a una proprietà che contenga valori univoci, ad esempio una chiave primaria, oppure aggiungere una clausola OrderBy basata su una proprietà che contenga valori univoci alla query in DomainDataSource. Se si ordinano i dati solo in base a una proprietà che non contiene valori univoci, i valori restituiti potrebbero contenere dati incoerenti o mancanti tra le pagine.

Si considerino ad esempio i valori presenti nella tabella. I valori ID sono univoci, ma i valori Paese non lo sono.

ID Paese

1

UK

2

UK

3

US

4

UK

5

US

6

IT

7

UK

8

UK

9

US

10

SP

Se si desidera implementare il paging per questi valori ordinati in base al paese, è possibile utilizzare il markup seguente:

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

Osservazioni

La classe DomainDataSource fornisce la raccolta di SortDescriptors per semplificare l'ordinamento dei dati. Nella raccolta SortDescriptors si aggiungono istanze di SortDescriptor che descrivono i valori da utilizzare per ordinare la raccolta. È possibile aggiungere tutte le istanze di SortDescriptor desiderate per fornire livelli di ordinamento nonché specificare un ordinamento crescente o decrescente per i dati.

Se si utilizza SortDescriptor a livello di codice, verificare che la proprietà CanLoad restituisca true. Se si tenta di eseguire un ordinamento quando CanLoad restituisce false, l'oggetto DomainDataSource genera un'eccezione di operazione non valida. L'ordinamento determina infatti l'avvio di un'operazione di caricamento che non è consentita quando CanLoad è false.

Gerarchia di ereditarietà

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

Sicurezza dei thread

Tutti i membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. Non è invece garantita la sicurezza dei membri dell'istanza.

Piattaforme

Piattaforme di sviluppo

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

Piattaforme di destinazione

Change History

Vedere anche

Riferimento

Membri SortDescriptor
Spazio dei nomi System.Windows.Controls