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 特性分配给包含唯一值(如主键)的属性。或者将基于包含唯一值的属性的 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