SortDescriptor 클래스
정렬 기준에 대해 설명합니다.
네임스페이스: System.Windows.Controls
어셈블리: system.windows.controls.domainservices.dll의 System.Windows.Controls.DomainServices
사용법
‘사용 방법
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를 포함시키십시오. 또는 고유 값을 포함하는 속성을 기준으로 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에서 잘못된 작업 예외를 throw합니다. 정렬을 통해 로드 작업이 시작되고 CanLoad가 false일 경우 로드 작업은 허용되지 않습니다.
상속 계층
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