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