В нашем приложении мы размещаем небольшой список WPF внутри хоста Element, мы реализуем перетаскивание с помощью события 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 запускает только одно событие PreviewMouseMove, прежде чем мышь покидает Elementhost, поэтому операция перетаскивания не запускается до тех пор, пока мышь не будет возвращена Elementhost. и возникает другое событие PreviewMouseMove.
Есть ли надежный способ обработки этого дела?