我必须为一个WPF项目使用Listview而不是Datagrid,所以我必须手动实现排序。基础列表正确排序,但显示不正确。
我的列表设置如下:
ObservableCollection<myObject> MasterList = new ObservableCollection<myObject>();
ObservableCollection<myObject> SortedList = new ObservableCollection<myObject>();
guiList.ItemsSource = SortedList;
我使用this教程设置排序,一切似乎都很好,但GUI列表没有按照我期望的顺序排序。这是完成排序的代码的一个小例子:
private void UpdateList()
{
switch (columnToSort)
{
case ColumnSort.ID:
if (sortDirection == ListSortDirection.Ascending)
{
SortedList = new ObservableCollection<myObject>(MasterList.OrderBy(o => o.ID));
}
else
{
SortedList = new ObservableCollection<myObject>(MasterList.OrderByDescending(o => o.controllerID));
}
break;
}
当我调试上面的代码时,SortedList的顺序正确,所以我无法弄清楚为什么guiList没有以相同的顺序显示。我甚至尝试过:
guiList.ItemsSource = null;
guiList.ItemsSource = SortedList;
每次更新后只是为了“重置”guiList,但仍然无法正常工作。有什么建议吗?
答案 0 :(得分:1)
我无法准确说明为什么上面的代码无法正常工作,因为它似乎对我有用,但是你应该考虑使用CollectionView,这样你就不需要维护一个单独的集合了已排序的对象。