但是 Load() 不会创建任何东西,它只需要一堆项目并将它们从底层源加载到您的上下文中。您不能对 context.mytable 强加排序,因为 mytable 不包含实际数据,它包含您将用于获取实际数据的查询的一部分。
要对您的 UI 进行排序,您需要对要绑定的列表进行排序,或者使用无序列表并将其包装在一个对象中,该对象的工作是应用排序。由于您使用的是 Local ,因此请使用后者并使用CollectionViewSource。
这是 WPF 中 CollectionViewSource 的示例。它绑定到 DataContext 的属性 StateOrProvinces ,这是我想要按顺序显示的无序列表:
<UserControl.Resources>
<CollectionViewSource x:Key="stateOrProvinceViewSource" Source="{Binding Path=StateOrProvinces}" >
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</UserControl.Resources>
与 scm 是:
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
代码中的相同内容:
CollectionViewSource orderedView = new CollectionViewSource()
{
Source = StateOrProvinces,
};
orderedView.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
使用额外的层来应用排序有一些优点。它使您可以在不同的地方显示具有不同排序的相同列表,并且您可以从基础列表中添加/删除项目,而无需每次都手动应用排序。
您还应该查看具有一些额外花里胡哨的CollectionView类,但我不会进入它,以减少信息过载。