共用方式為


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 擲回無效作業例外狀況。排序會起始載入作業,但是當 CanLoadfalse 時,系統不允許進行載入作業。

繼承階層

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

目標平台

Change History

另請參閱

參考

SortDescriptor 成員
System.Windows.Controls 命名空間