WPF: перетаскивание для родителей и детей - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть несколько сеток внутри стековой панели. Сетки и панели стека должны быть перетаскиваемыми.

В настоящее время я использую 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 отличается для обоих событий

Что мне лучше сделать?

...