【发布时间】:2011-02-14 09:20:30
【问题描述】:
我有一个 ListView,它的 ItemsSource 设置为 ObservableCollection。用户可以通过使用 CollectionViewSource.GetDefaultView 并更改 ICollectionView 过滤器和 SortDescriptions 来对 ListView 进行排序和过滤。
当用户右键单击一行时,他们可以将一个项目添加到集合中。我希望这个新行出现在右键单击的行下方。到目前为止,我为此类事情找到的所有方法都是使用 ListView.Items 完成的,但我无法使用,因为我正在设置 ItemsSource 属性。
【问题讨论】:
-
错字? “软和过滤” = 排序和过滤?这是否意味着您希望新添加的项目出现乱序?换句话说,无论它将排序到哪里,它都应该始终出现在右键单击的行之后?
-
错字已更正 - 是的,新项目将出现故障(直到用户再次排序)。这样新项目才会出现在 UI 中,而不是在视图之外,并且用户认为它没有被添加。
-
为了解决这个问题,我为我的对象添加了一个新属性,并使用它来“烘焙”当前的排序顺序,将此属性设置为我希望它出现的位置添加我的新项目,然后将 SortDescriptions 设置为此新属性。它有预期的结果,但似乎有更好的方法来处理这个问题。