WPF 单击和拖放事件发生冲突吗?

标签 wpf events drag-and-drop click

我有一个 WPF 列表框,其中的项目样式为按钮。我用过gong-wpf-dragdrop非常容易地实现拖放,这样我就可以重新排序列表项。但是,我现在希望能够左键单击其中一个按钮来启动编辑操作,但 ListBox 上的 MouseLeftButtonUp 事件似乎被拖放操作吞没了。 (我使用 MVVM Light 中的 EventToCommand 来连接所有内容)。

更改列表框以响应 MouseRightButtonUp 效果很好(因此我可以使用鼠标左键进行拖放,并使用鼠标右键启动编辑操作),但我宁愿保留鼠标右键上下文菜单。

我也尝试过使用MouseDoubleClick,但是虽然启动了编辑操作,但它总是打开列表中的第一项进行编辑,并将双击的列表项移动到列表顶部 - 对于每个相关人员来说都很困惑!

关于如何解决这个问题有什么想法吗?

最佳答案

如果我理解正确的话,如果单击按钮,您就不想拖放。一种方法是连接按钮的 PreviewMouseLeftButtonDown。开始在事件处理程序中编辑操作并设置 e.Handled=true。这样,MouseLeftButtonDown 将不会到达列表框,并且不会启动拖放操作。一个缺点是该按钮将对鼠标按下而不是鼠标按下使用react(因此类似于 ClickMode=Press)。

问候, 罗布

关于WPF 单击和拖放事件发生冲突吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448711/

相关文章:

android - 防止将自定义 mimetype 拖放到 EditText

c# - 我应该在 Task.Run 操作中的 Task.Delay 上使用 ConfigureAwait(false) 吗?

Mysql连接用户和事件表

javascript - 如何检测文本区域上箭头键的按下事件?

angular - 使用 Angular Material 的拖放重新排序垫表行

objective-c - 使用未检测/定义的拖放跟踪区域时

c# - WPF MVVM 应用程序中常量(标签文本等)应该放在何处

wpf - XAML 边框与矩形

c# - 如何实现工作空间的小 map ?

java - JTree右键单击选择项目