有没有办法对listview进行排序而不必重新创建其所有元素?

时间:2011-08-23 09:18:54

标签: .net wpf listview sorting listcollectionview

我有一个listView显示一堆图表。我可以使用不同的标准对列表视图进行排序。不幸的是,当我执行排序时,操作花费了比预期更多的时间,我意识到在排序触发后,所有图形都被重新创建。

我的数据源是一个可观察的集合,视图由图表控件和一些标签组成。我使用视图排序描述对视图执行排序,因此应该对视图而不是数据源执行排序,对吗?

lstView.Items.SortDescriptions.Clear();
lstView.Items.SortDescriptions.Add(new SortDescription(_field, _lstViewDirection));

我一直在搜索,似乎排序触发刷新,从控件中删除UI元素并重新创建它们......但这似乎是不必要的,因为我只是在命令UI元素的位置。

有没有办法避免这种刷新行为,只重新排序UI元素位置?

1 个答案:

答案 0 :(得分:0)

您需要使用虚拟化,因此只会重绘UI中显示的元素而不是整个集合。

http://www.codeproject.com/KB/WPF/WpfDataVirtualization.aspx