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