2010-02-13 68 views
4

我有一個可排序的listview,它會隨實時數據填充。排序工作完美,但是當一個項目被添加到集合後被修改時會出現真正的問題。無論排序順序如何,修改項目的位置都不會改變。在WPF排序的ListView中修改項目不會改變該項目的排序位置

我已經使用了它,但找不到更好的解決方案,使我的listview完美的排序列表視圖。

解決方案?

+0

您能向我們展示當數據進入時用於排序的代碼嗎? – 2010-02-13 15:45:57

+0

@Tony - well代碼太多了,無法在這裏發佈..但問題似乎與任何可排序的listview樣本在網上avialable。 – Faisal 2010-02-13 16:32:26

+1

除非我們知道如何填充'ListView',否則我們真的無能爲力。您是否將項目添加到'ListView'用作源的'ObservableCollection'中?你是否以某種其他方式將項目添加到「ListView」? – 2010-02-16 20:54:00

回答

4

我假設您採用的方法類似於this MSDN sample。如果是這樣,則根據集合視圖的SortDescriptions進行排序。只要源集合是可觀察的,當添加或刪除集合中的項目時,應該遵守排序順序。

真正的問題,當一個項目被被添加到集合後修改出現。在這種情況下,收集不會自動重新排序。

我在'E' is for Editable Collection(我的ItemsControl A to Z系列)中詳細解釋了該問題。我還介紹了幾種提供不同級別性能的解決方法。最激烈的是通過在CollectionView上調用Refresh()來強制重新排序整個集合。如果可能的話,我會避免這種情況並使用更好的選項,例如在項目上實現IEditableObject,並在項目上的屬性發生更改時發出Edit(),然後是Commit()。

+0

謝謝,這非常有幫助 – Faisal 2010-02-17 04:48:40