WPF拖动距离阈值

9 c# wpf treeview drag-and-drop

我有一个带有两个WPF树视图的程序,允许在两者之间进行拖放.问题是,打开/关闭树视图上的项目可能很烦人,因为在按住鼠标左键的同时移动鼠标只需一个像素就会触发拖放功能.有没有办法指定鼠标在被认为是拖放之前应该移动多远?

van*_*lle 18

这有一个系统参数.如果你有

Point down = {where mouse down event happened}
Point current = {position in the MouseMove eventargs}
Run Code Online (Sandbox Code Playgroud)

然后鼠标移动了最小拖动距离if

Math.Abs(current.X - down.X) >= SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(current.Y - down.Y) >= SystemParameters.MinimumVerticalDragDistance)
Run Code Online (Sandbox Code Playgroud)


mdm*_*m20 1

只需在代码中构建一个小缓冲区来确定拖动何时开始。

  1. 标记鼠标按下
  2. 鼠标移动时 - 检查鼠标是否按下。如果是,请检查其移动距离是否比您指定的任何缓冲区更远(3 像素可能不错)
  3. 如果有,则开始拖动。