У меня есть несколько сеток внутри стековой панели. Сетки и панели стека должны быть перетаскиваемыми.
В настоящее время я использую OnPreviewMouseMove для каждого из этих элементов управления, чтобы определить, есть ли попытка перетаскивания, и инициировать операцию перетаскивания:
protected override void OnPreviewMouseMove(MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Released)
return;Point mousePos = e.GetPosition(null);
Vector diff = mStartPoint - mousePos;
if (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
{
mStartPoint = mousePos;
MyDragDrop(e); //Enough diff, Initialize the drag & drop operation
}
}
Когда я хочу перетаскивая любую сетку, родительский StackPanel также выполняет MyDragDrop, чего я хотел бы избежать. Я читал об остановке распространения в других вопросах с настройкой e.Handled = true, но это не работает. Я вижу, что объект MouseEventArgs e отличается для обоих событий
Что мне лучше сделать?