在我们的应用程序中,我们在 Element 主机内托管了一个小型 WPF 列表框,我们使用 PreviewMouseDown 事件实现拖放...
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 才开始拖动操作引发事件。
有没有一种稳健的方法来处理这种情况?