【问题标题】:WPF ListView Insert Item at Given Position when using ItemsSource使用 ItemsSource 时 WPF ListView 在给定位置插入项目
【发布时间】:2011-02-14 09:20:30
【问题描述】:

我有一个 ListView,它的 ItemsSource 设置为 ObservableCollection。用户可以通过使用 CollectionViewSource.GetDefaultView 并更改 ICollectionView 过滤器和 SortDescriptions 来对 ListView 进行排序和过滤。

当用户右键单击一行时,他们可以将一个项目添加到集合中。我希望这个新行出现在右键单击的行下方。到目前为止,我为此类事情找到的所有方法都是使用 ListView.Items 完成的,但我无法使用,因为我正在设置 ItemsSource 属性。

【问题讨论】:

  • 错字? “软和过滤” = 排序和过滤?这是否意味着您希望新添加的项目出现乱序?换句话说,无论它排序到哪里,它都应该始终出现在右键单击的行之后?
  • 错字已更正 - 是的,新项目将出现故障(直到用户再次排序)。这样新项目才会出现在 UI 中,而不是在视图之外,并且用户认为它没有被添加。
  • 为了解决这个问题,我为我的对象添加了一个新属性,并使用它来“烘焙”当前的排序顺序,将此属性设置为我希望它出现的位置添加我的新项目,然后将 SortDescriptions 设置为此新属性。它有预期的结果,但似乎有更好的方法来处理这个问题。

标签: wpf listview


【解决方案1】:

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

【讨论】:

  • 使用DefaultView进行排序时,ListView的顺序会与底层集合的顺序不匹配。
猜你喜欢
  • 2011-01-14
  • 1970-01-01
  • 2013-01-31
  • 2014-12-08
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
相关资源
最近更新 更多