Jak zaktualizować pozycję adornera przeciągania podczas przeciągania i upuszczania WPF?

Używam adornera, aby pokazać „ducha” przeciąganego elementu ...

var adornerLayer = AdornerLayer.GetAdornerLayer(topLevelGrid);
dragAdorner = new DragAdorner(topLevelGrid, itemToDrag);
adornerLayer.Add(dragAdorner);
dragAdorner.UpdatePosition(e.GetPosition(topLevelGrid));

DragDrop.DoDragDrop(sourceItems, viewModel, DragDropEffects.Move);

adornerLayer.Remove(dragAdorner);
itemToDrag = null;

... ale nie mogę znaleźć dobrego sposobu na zmianę pozycji adornera podczas przeciągania. Najbliższe, jakie mam, to ustawienieAllowDrop="true" na siatce najwyższego poziomu i dając mu obsługę DragOver ...

private void TopLevelGrid_OnDragOver(object sender, DragEventArgs e)
{
 dragAdorner.UpdatePosition(e.GetPosition(topLevelGrid));
}

Ale to oznacza, że ​​nie rozumiemDragDropEffects sprzężenie zwrotne na kursorze, tzn. zawsze pokazujeDragDropEffects.Move kursor zamiastDragDropEffects.None dopóki nie przekroczę rzeczywistego celu upuszczenia.

Czy ktoś zna lepszy sposób na aktualizację pozycji adornera?

questionAnswers(2)

yourAnswerToTheQuestion