次の方法で共有


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>

ページングと並べ替えを同時に実装する場合は、プライマリ キーのような一意の値を含むプロパティに PropertyPath 属性が割り当てられた SortDescriptor を少なくとも 1 つ含めます。または、一意の値を含むプロパティに基づいて 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 を返すことを確認してください。CanLoadfalse を返す場合に並べ替えようとすると、DomainDataSource が無効な操作例外をスローします。並べ替えは読み込み操作が開始しますが、CanLoadfalse の場合は、読み込み操作が許可されていません。

継承階層

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

スレッド セーフ

この型の public static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

プラットフォーム

開発プラットフォーム

Windows XP Home Edition, Windows XP Professional, Windows Server 2003 、Windows Server 2008、および Windows 2000

ターゲット プラットフォーム

Change History

参照

リファレンス

SortDescriptor のメンバー
System.Windows.Controls 名前空間