如何在拖放时获得MousePosition? (WPF-MVVM)

问题描述:

所以基本上我跟着this的例子来创建我自己的Drag & Drop。我希望能够将一个对象从一个视图拖动到另一个视图(MainWindow内的UserControls),并将其放置在当前鼠标位置相对于放置我的元素的视图中。如何在拖放时获得MousePosition? (WPF-MVVM)

我想在我的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; 
    } 

但是在这里我得到鼠标位置相对于我的主窗口中。这导致了这样的问题,即物体以明显的偏移被掺杂。然而,我不知道如何让位置真实到我放弃的视角。

工作解决方案:

var position = e.GetPosition(sender as IInputElement);