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



我有一个WPF ListBox,其中的项被设置为按钮。我已经使用了gong wpf拖放来非常容易地实现拖放,所以我可以重新排序列表项。然而,我现在希望能够左键单击其中一个按钮来启动编辑操作,但ListBox上的MouseLeftButtonUp事件似乎被拖放操作所吞噬。(我使用MVVM Light的EventToCommand来连接所有内容)。

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

我也尝试过使用MouseDoubleClick,但尽管它启动了编辑操作,但它总是打开列表中的第一个项目进行编辑,并将双击的列表项目移动到列表的顶部——这让所有相关人员都感到困惑!

有什么想法吗?

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

谨致问候,Rob

最新更新