【问题标题】:Showing ListVew SelectedItems on Top在顶部显示 ListView SelectedItems
【发布时间】:2012-04-03 07:37:27
【问题描述】:

我在寻找什么:

  1. 所有选定的项目都显示在顶部。

问题:

  • 我有一个自定义增量搜索控件,用于填充增量模式的下拉菜单。在下拉弹出窗口中,我有一个 ListView,其中 ItemsSource 设置为未知类型的集合。 SelectionMode 是 Multiple

  • ItemsSource 是 IsReadOnly

我需要一种解决方案,以便在进行选择时将 SelectedItem 移到顶部。

【问题讨论】:

  • 我会查看 CollectionViewSource 以对 ListViewItem 的 Selected 属性进行排序 msdn.microsoft.com/en-us/library/… 而且类型未知并不重要,因为它是 ListViewItem 的属性
  • 当你说未知类型的集合时,你的意思是集合类型未知或项目类型未知或两者兼而有之。

标签: wpf silverlight mvvm


【解决方案1】:

对我来说,解决这个问题的方法有很多种。

1) 在列表视图中实现 selectedindexchanged 事件。调用事件时,检查所有项目并将选定的项目移至顶部。

2) 创建一个继承自例如的类可观察的集合。将列表视图的选定属性绑定到集合中对象的布尔属性(检查对象)。当 (checkobject) 的 bool 属性发生变化时(使用 propertychanged 事件),将对象移到前面(在那些 bool = true 的后面)。这样,您可以将实现保留在集合类中。

3) 如果集合是只读的,则可以使用 bool 属性排序。但是,这意味着需要知道对象

4) 如果集合未知,可以使用自定义排序。一个参考是"Apply a custom sort rule to a wpf datagrid"

【讨论】:

  • 抱歉,我的 ItemsSource 是只读的。我无法对 itemssource 进行任何更改。当 listview 也不允许我从它的 Items 中进行任何添加/删除时,因为它绑定了 itemssource
  • 嗯。那么可以使用一种(ischecked property)代替移动对象(move)吗?
  • 真的。但我不知道该类型
  • 我想你会自己对列表视图项目进行排序。可能修改以下实现。 stackoverflow.com/questions/4013521/…
  • 该示例适用于 winform。 ListViewItemSorter 在 wpf 中不可用
猜你喜欢
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
相关资源
最近更新 更多