[WPF] ListBox 的双击事件处理
简单记录下 WPF 中的 ListBox 双击事件的处理,适用于数据源的方式。
处理 ListBox 的双击事件
事件名称:MouseDoubleClick
。
函数原型:private void ListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
。
实参 sender
为 ListBox
实例(本文中名为 listbox
)。e
为鼠标相关信息,可以通过 ChangedButton
来判断是哪个键按下了等等。
得到当前的双击项
ListBox 有 SelectedItem
属性 和 SelectedIndex
属性。
前者的值为对应的数据源的数据类型,后者的值为选中项的索引(从 0 开始,-1 为未选中)。
值得一提的是:双击 ListBox 的空白区域触发这个事件的时候,以上两个值仍然是当前选中项,并非无效。 所以还需要多一步操作:判断双击的时候鼠标是否的选中项控件内。
取得选中索引
1
|
|
取得索引对应的 ListBoxItem 容器
因为是采用数据源的方式,所以这个容器不能直接获取到。它需要调用 ContainerFromIndex
来获取。
1
|
|
判断是否鼠标双击时的项
这个比较简单,所有的控件都可以这样来做。
1 2 3 |
|
取得双击时的数据项
有多种方式。
- 上面选中项的数据上下文:
item.DataContext
- ListBox 的当前选中数据:
listbox.SelectedItem
完整参考代码
1 2 3 4 5 6 7 8 9 10 11 |
|