【发布时间】:2010-03-05 14:39:27
【问题描述】:
我想实现一个 ListView,它会像现在一样拥有一个 SelectedItems 列表, 但它也会在光标下有一个单独的项目(可使用鼠标/键盘移动)。 项目选择将通过特殊操作(例如空格键)完成。
换句话说,我想抑制 ListView 上的选择,并且仅在正常发生选择时更改 FocusedItem。
我认为我应该对 ListView 的 FocusedItem 和 SelectedItems 属性做点什么, 但问题是点击一个项目会选择它(也会改变焦点)。
一种解决方案是捕获 keydown 和 mouseclick 事件,这些事件可以更改选择并仅根据事件将 FocusedItem 更改为项目( mouseclick 中鼠标指针下方的项目和 keydown 上/下箭头中当前项目上方/下方的项目)。然后我只会在我的特殊事件(空格键按下)中将项目添加到 SelectedItems 集合中。
我要问的是,是否有更优雅的方法来解决这个问题,或者上面的解决方案是否尽可能简单。谢谢
【问题讨论】:
-
带有复选框的 ListView 是一种更传统的方式来处理持久选择。