ListView排序问题

thisishexiao thisishexiao 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
对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列后的结果,不清楚这个顺序是怎么出来的,
怎么破?
...全文
评论 6
收藏 已收藏
分享
返回顶部
thisishexiao
WPF/Silverlight 8,757 成员 12,031 内容