ICollectionView键盘索引在Refresh上重置

时间:2012-09-16 20:06:05

标签: c# keyboard refresh selection icollectionview

我使用ICollectionView显示ListView中的项目列表。我遇到过一个我似乎无法找到解决方案的问题。

只要只使用鼠标,选择就可以正常工作。为了始终显示最新信息,我不时使用ICollectionView.Refresh()方法。但是,使用键盘箭头浏览项目列表时会出现问题。

无论当前SelectedIndex位于哪个位置,只要我按下一个箭头键调用Refresh(),所选项就是ListView第0位的项目。

之前是否有人遇到此问题并找到了解决此问题的方法?

2 个答案:

答案 0 :(得分:0)

当您要刷新列表视图时执行此操作:

//store the selected items
ListView.SelectedListViewItemCollection collection;
collection = listView1.SelectedItems;

// refresh the list view
listView1.Refresh();

//now select them again
foreach (ListViewItem item in collection)
    item.Selected = true;

答案 1 :(得分:0)

您可以在集合中使用的类中实现INotifyPropertyChanged接口,而不是调用ICollectionView.Refresh()。只要任何显示的属性发生变化,就调用PropertyChanged。