SortDescriptor 類別
描述排序準則。
命名空間: System.Windows.Controls
組件: System.Windows.Controls.DomainServices (於 system.windows.controls.domainservices.dll)
使用方式
'用途
Dim instance As SortDescriptor
語法
'宣告
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
範例
下列範例顯示如何將排序描述元加入至 DomainDataSource。從查詢中擷取的資料會依照 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>
當您同時實作分頁和排序時,請至少加入一個 SortDescriptor 並將其 PropertyPath 屬性 (Attribute) 指派至包含唯一值的屬性 (Property),例如主索引鍵。或者,請根據包含唯一值的屬性,將 OrderBy 子句加入至 DomainDataSource 中的查詢。如果您只針對不包含唯一值的屬性排序資料,傳回值可能會包含頁面之間不一致或遺漏的資料。
例如,以下表中的值為例。請注意,ID 值是唯一的,但是 Country 值不是唯一的。
ID | Country |
---|---|
1 |
UK |
2 |
UK |
3 |
US |
4 |
UK |
5 |
US |
6 |
IT |
7 |
UK |
8 |
UK |
9 |
US |
10 |
SP |
如果您想要針對這些依照 Country 排序的值實作分頁,可以使用下列標記:
<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>
備註
DomainDataSource 類別會提供 SortDescriptors 集合來加快排序資料的速度。在 SortDescriptors 集合中,您可以加入 SortDescriptor 執行個體,其中描述要用於排序集合的值。您可以視需要加入任意數目的 SortDescriptor 執行個體,以便提供分層排序。您可以指定要依遞增或遞減順序排序資料。
如果您以程式設計方式使用 SortDescriptor,請確認 CanLoad 屬性會傳回 true。當 CanLoad 傳回 false 時,如果嘗試排序,就會導致 DomainDataSource 擲回無效作業例外狀況。排序會起始載入作業,但是當 CanLoad 為 false 時,系統不允許進行載入作業。
繼承階層
System.Object
System.Windows.DependencyObject
System.Windows.Controls.SortDescriptor
執行緒安全性
任何這個類型的公用靜態 (在 Visual Basic 中為 共用) 成員都具備執行緒安全。 不保證任何執行個體成員安全執行緒。
平台
開發平台
Windows XP Home Edition, Windows XP Professional, Windows Server 2003 、Windows Server 2008 和 Windows 2000