Donc, fondamentalement, j'ai suivi this par exemple pour créer mon propre Drag & Drop. Je veux être capable de faire glisser un objet d'une vue à une autre (UserControls à l'intérieur de MainWindow) et le placer à l'emplacement actuel de la souris par rapport à la vue dans laquelle j'ai laissé tomber mon élément.Comment obtenir la MousePosition lors d'un glisser-déposer? (WPF-MVVM)
J'ai essayé en utilisant ce code dans mon FrameworkElementBehavior:
private void AssociatedObject_Drop(object sender, DragEventArgs e)
{
CanItDropHere(e,
canDrop:() =>
{
var type = _allowedDropTypes.First(t => e.Data.GetDataPresent(t));
var draggedItem = e.Data.GetData(type) as IDragable;
var position = e.GetPosition(App.Current.MainWindow);
var droppedOn = AssociatedObject.DataContext as IDropableWithMousePos;
droppedOn?.Drop(draggedItem,position);
});
e.Handled = true;
}
Cependant ici, je reçois la position de la souris par rapport à mon MainWindow. Cela conduit au problème que l'objet est dopé avec un décalage qui est évident. Cependant, je n'ai aucune idée de comment obtenir la position réaliste à la vue dans laquelle je laisse tomber.