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?