问题描述
[.NET Framework 4.x,WPF]
我需要处理对具有 ListView
的 SelectionMode="Multiple"
控件中的项目的双击。单击应切换项目的选择状态,而双击应触发自定义操作而不影响项目的选择状态。到目前为止,我还没有能够以令人满意的方式完成这项工作:
当我使用 (Preview)MouseDoubleClick
事件处理程序时,双击将切换选择状态,就像我执行了单击一样。当我使用常规的 (Preview)MouseLeftButtonDown
事件处理程序并检查 MouseButtonEventArgs.ClickCount >= 2
时,项目的选择状态将切换两次 - 这比前者更好,因为在它结束时项目恢复到所需状态 - 但是它至少仍然是一个外观问题,因为您会看到项目的选择状态发生变化——此外,任何对选择变化做出反应的事件处理程序都将不必要地触发——两次。
当我使用 PreviewMouseLeftButtonDown
时,设置 e.Handled = true
,然后在调用我的自定义操作之前检查 e.ClickCount >= 2
,然后双击不再更改选择 - 但是,单击也不更改。
作为最后一次尝试的扩展,是否有办法重新引发我用 e.Handled = true
抑制的常规单击事件?当在给定的时间间隔内没有发生第二次点击时(类似于 this example 的行为实现)?
我目前不需要专用的单击处理程序。在这种情况下,我只想要 ListBox
的默认行为。
注意:在任何人提到它之前:我已经在使用自定义行为和命令以对 MVVM 友好的方式处理这个问题 - 这不会改变 .NET 4.x 的 ListBox 对双击做出愚蠢反应的根本问题SelectionMode
是 Multiple
- 不幸的是,升级到 .NET5 或使用不同的 SelectionMode 目前对我来说不是一种选择。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)