在我们的应用程序中,我们在一个元素宿主中托管了一个小的WPF ListBox,使用PreviewMouseDown事件实现拖放...
我们遇到的问题是,当我快速点击并拖动一个项目时,WPF控件在鼠标离开Elementhost之前只会触发一次PreviewMouseMove事件,因此拖动操作直到鼠标返回到Elementhost并引发另一个PreviewMouseMove事件才开始。
有没有一种稳健的方式来处理这种情况?
private void Border_PreviewMouseMove(object sender, MouseEventArgs e)
{
// Get the current mouse position
Point mousePos = e.GetPosition(null);
Vector diff = startPoint - mousePos;
if (e.LeftButton == MouseButtonState.Pressed &&
Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance &&
Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
{
OnDragStarted(e);
}
}
我们遇到的问题是,当我快速点击并拖动一个项目时,WPF控件在鼠标离开Elementhost之前只会触发一次PreviewMouseMove事件,因此拖动操作直到鼠标返回到Elementhost并引发另一个PreviewMouseMove事件才开始。
有没有一种稳健的方式来处理这种情况?