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

时间:2011-06-23 02:29:11

标签: wpf events drag-and-drop click

我有一个WPF ListBox,其中的项目被设置为按钮。我已经使用gong-wpf-dragdrop来轻松实现拖放操作,因此我可以重新排序列表项。但是,我现在希望能够左键单击其中一个按钮来启动编辑操作,但ListBox上的MouseLeftButtonUp事件似乎被拖放操作吞噬了。 (我正在使用MVVM Light中的EventToCommand将所有内容挂钩)。

更改ListBox以响应MouseRightButtonUp工作正常(因此我可以使用鼠标左键拖放,并使用鼠标右键启动编辑操作),但我宁愿保留鼠标右键上下文菜单。

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

有关如何处理此事的任何想法?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,如果单击按钮,则不想拖放。一种方法是连接按钮的PreviewMouseLeftButtonDown。在eventhandler中启动编辑操作并设置e.Handled = true。这样,MouseLeftButtonDown将不会到达列表框,也不会启动拖放操作。一个缺点是按钮会对mousedown而不是mouseup做出反应(所以它就像ClickMode = Press)。

此致 罗布