2011-08-23 59 views
1

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

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

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

我一直在寻找周围,它似乎是某种触发刷新其去除控制的UI元素,并重新创建它们...但是这似乎没有必要给定的我只是订货的UI元素的位置。

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

回答

0

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

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

+0

我试图UI虚拟化,即使它使aplication多一点反应仍然再现集合中的所有项目。此外,我阅读了关于数据虚拟化的所有文章,在排序的情况下,他们仍然在视图上使用SortDescription,它将重新初始化我的所有图表......必须有一种方法来改变没有重新创建所有元素的集合...不是? – Luciano

相关问题