2011-08-23 32 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

相關問題