Comment mettre à jour la position d'un glisser-ornement au cours de WPF drag-n-drop?

Je suis à l'aide d'un décorateur pour montrer un "fantôme" de l'élément glissé...

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;

...mais je ne peux pas trouver une belle façon de mettre à jour la position de l'ornement au cours de la traînée. Le plus proche que j'ai est par la mise en AllowDrop="true" sur le premier niveau de la grille et de lui donner une DragOver gestionnaire...

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

Mais cela signifie que je n'ai pas le bon DragDropEffects des commentaires sur le curseur, c'est à dire, il indique toujours l' DragDropEffects.Move le curseur au lieu de DragDropEffects.None jusqu'à ce que je suis au-dessus d'une baisse effective de la cible.

Quelqu'un sait-il une meilleure façon de mettre à jour l'ornement de position?

OriginalL'auteur IanR | 2010-01-19