2010-04-30 77 views
0

我有一個ListView誰是ItemsSource設置爲ObservableCollection。用戶可以對ListView進行排序和過濾,通過使用CollectionViewSource.GetDefaultView並更改ICollectionView Filter和SortDescriptions來完成。WPF ListView使用ItemsSource時在給定位置插入項目

當用戶右鍵單擊一行時,他們可以添加一個項目到集合中。我希望這個新行出現在右鍵單擊的行下方。到目前爲止,我發現的所有方法都是用ListView.Items完成的,因爲我設置了ItemsSource屬性,所以我無法使用它。

+0

typo? 「軟和過濾器」=排序和過濾? 這是否意味着您希望新添加的項目不按排序順序顯示?換句話說,無論它將*排序到哪裏,它應該總是出現在右擊行之後? – 2010-04-30 21:53:07

+0

錯字糾正 - ty 是的,新項目將失序(直到用戶再次排序)。這是新的項目出現在用戶界面中,而不是在視圖之外,用戶認爲它沒有被添加。 – ViNull 2010-05-04 18:37:18

+0

爲了解決這個問題,我已經爲我的對象添加了一個新的屬性,並用它來「烘烤」當前的排序順序,添加具有此屬性集的新項目,使其出現在我想要的位置,然後將SortDescriptions設置爲這個新的屬性。它有理想的結果,但似乎有更好的方法來處理這個問題。 – ViNull 2010-05-05 16:04:06

回答

-1

Try ObservableCollectionName.Insert((ListViewName.SelectedIndex + 1),ItemToInsert)

+0

當使用DefaultView進行排序時,ListView的順序將不匹配基礎集合的順序。 – ViNull 2010-05-04 18:38:14

相關問題