¿Cómo actualizar la posición de un adornador de arrastre durante WPF arrastrar y soltar?

Estoy usando un adorno para mostrar un 'fantasma' del elemento que se está arrastrando ...

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;

... pero no puedo encontrar una buena manera de actualizar la posición del adornador durante el arrastre. Lo más cerca que tengo es fijándomeAllowDrop="true" en la cuadrícula de nivel superior y dándole un controlador DragOver ...

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

Pero esto significa que no tengo la debidaDragDropEffects retroalimentación sobre el cursor, es decir, siempre muestra laDragDropEffects.Move cursor en lugar deDragDropEffects.None hasta que estoy sobre un objetivo de caída real.

¿Alguien sabe una mejor manera de actualizar la posición de adorno?

Respuestas a la pregunta(2)

Su respuesta a la pregunta