我已經使用了很長時間做在WPF排序的技術是創建一個CollectionViewSource並指定SortDescriptions,如問題排序的DataGrid
<Window.Resources>
<CollectionViewSource x:Key="testView">
<CollectionViewSource.SortDescriptions>
<cm:SortDescription PropertyName="FirstName" Direction="Descending"></cm:SortDescription>
<cm:SortDescription PropertyName="FamilyName"></cm:SortDescription>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
這已經非常完美的一切,我在它拋出除與DataGrid。它似乎第一次正常工作,但如果我更改數據,然後網格殺死分類。它甚至殺死了使用相同CollectionViewSource的其他控件。我已經在這裏創造一個樣本項目
http://www.mikesdriveway.com/misc/GridSortIssue.zip
爲了測試這個問題上運行的項目,然後單擊刷新數據按鈕。注意物品的順序改變。這隻發生一次,再次測試停止並再次運行項目。現在從DataGrid中刪除ItemsSource並再次運行該項目。這次當你點擊刷新數據按鈕時什麼也沒有發生,這意味着排序保持不變。不知怎的,網格正在殺死CollectionViewSource中的排序。這是一個錯誤?
乾杯, 邁克爾
雖然並不完美,這是一個相當不錯的解決方法。我已經實現了這一點,它正在工作,謝謝。爲了讓第三方電網製造商順利運營,微軟似乎做出了一個垃圾電網。不幸的是,這些第三方也使垃圾網格,所以我們最終沒有選擇順便說一下,排序說明不會被清除,他們仍然存在,但由於某種原因停止運作。 – MikeKulls 2012-03-05 02:37:15
@MikeKulls:我不會那麼說,當然沒有什麼是完美的,但到目前爲止,我沒有太多的麻煩與默認的WPF控件,然後我沒有別人經常似乎有異國情調的要求。 – 2012-03-05 02:39:15
@MikeKulls:不,它們確實被清除掉了,我正在談論底層'View'的'SortDescriptions',即'CollectionViewSource.View.SortDescriptions'。 – 2012-03-05 02:39:51