ListView排序问题

thisishexiao 2014-09-10 03:44:48
对ListView中的项进行排序,思路是处理GridViewColumnHeader的Clicke事件,事件处理代码如下:

static void OnGridViewColumnHeaderClicked(object sender, RoutedEventArgs e)
{
var listview = sender as ListView;
var header = e.OriginalSource as GridViewColumnHeader;

if (listview != null && header != null)
{
var propName = header.Column.Header as string;
if (propName != null)
{
UpdateSortDescription(CollectionViewSource.GetDefaultView(listview.ItemsSource), propName);
}
}
}

static void UpdateSortDescription(ICollectionView view, string propName)
{
ListSortDirection direction = ListSortDirection.Ascending;

if (view.SortDescriptions.Count > 0 && view.SortDescriptions[0].PropertyName == propName)
{
if (view.SortDescriptions[0].Direction == ListSortDirection.Ascending)
{
direction = ListSortDirection.Descending;
}
}

//排序代码
view.SortDescriptions.Clear();
view.SortDescriptions.Add(new SortDescription(propName, direction));
view.Refresh();
}
现在的问题是:
1.虽然每次点击列头时排序代码都执行了,但只有第一次点击时有效果,后面再点都没有反应(排序的顺序是对的)
2.第一次排序的结果不正确,如下图,是点击ID列后的结果,不清楚这个顺序是怎么出来的,
怎么破?
...全文
149 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
thisishexiao 2014-09-16
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
参见:http://msdn.microsoft.com/zh-cn/library/ms745786(v=vs.110).aspx
这个例子做之前就看了。 后来请教了别人搞清楚了,是我的数据多封装了一层导致的。网上关于ListView排序的例子中数据大都是这样的(Collection)Users->(Class)User->(Property)Name and Age, ListView的ItemsSource绑定到Users上。我的数据是这样的:(Collection)Users->(Class)User->(Class)Person->(Property)Name and Age,ListView的ItemsSource还是绑定到Users上,结果就是比较器在User类中找不到Name和Age属性,导致奇怪的现象。 主要是我没贴出ViewModel的代码。。。 结贴给分!
thisishexiao 2014-09-11
  • 打赏
  • 举报
回复
晕了,引用错了
thisishexiao 2014-09-11
  • 打赏
  • 举报
回复
引用 1 楼 thisishexiao 的回复:
纠正一下,(排序的顺序是对的)指的是SortDescription的Direction是对的。
调了, view.SortDescriptions.Clear(); view.SortDescriptions.Add(new SortDescription(propName, direction)); 这段确实执行了,propName和direction也没问题
exception92 2014-09-11
  • 打赏
  • 举报
回复
自己 加断点调试了吗??
thisishexiao 2014-09-10
  • 打赏
  • 举报
回复
纠正一下,(排序的顺序是对的)指的是SortDescription的Direction是对的。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧