我们有一个 WPF 应用程序,它在 ListView 中有一个 DataGrid。
private DataTable table_;
我们生成一堆或动态列(取决于我们显示的报告)
然后我们进行查询并逐行填充DataTable,这个查询可能有也可能没有数据。(不是问题,应该是空网格)我们将ListView的ItemsSource设置为DataTable的DefaultView。
lv.ItemsSource = table_.DefaultView;
然后我们(查看用户对app的通行证使用情况,在列上设置排序)排序方法如下:
private void Sort(string sortBy, ListSortDirection direction)
{
ICollectionView dataView = CollectionViewSource.GetDefaultView(lv.ItemsSource);
dataView.SortDescriptions.Clear();
var sd = new SortDescription(sortBy, direction);
dataView.SortDescriptions.Add(sd);
dataView.Refresh();
}
在零数据表行场景中,排序不“成立”?如果我们动态添加行,它们将不会按排序顺序。
如果在应用排序时 DataTable 至少有 1 行,并且我们动态地将行添加到 DataTable 中,则行 com in 排序正确。
我已经构建了一个独立的应用程序来复制这个......
这很烦人,我可以添加一个检查以查看 DataTable 是否为空,然后重新应用排序...
任何人都知道这里发生了什么,我做错了什么吗?
仅供参考:如果也来自 MSDN,我们的依据是:http: //msdn.microsoft.com/en-us/library/ms745786.aspx
更新:
排序不是“持有”的意思是,ICollectionView.SortDescriptions 有一个 SortDescription,但没有对添加的数据进行排序,如果在添加 SortDescription 时有行,那么只有在基础 DataTable 中没有行时才会再次发生,然后一切效果很好~