Drag& Drop时如何获取MousePosition? (WPF-MVVM)

时间:2017-08-09 12:33:58

标签: c# wpf mvvm drag-and-drop

所以基本上我按照this示例创建了我自己的Drag& Drop。我希望能够将一个Object从一个View拖到另一个View(MainWindow中的UserControls),并将它放在相对于我放置Element的视图的当前鼠标位置。

我尝试在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;
    }

然而,在这里我获得了相对于我的MainWindow的鼠标位置。这导致了物体以明显的偏移被掺杂的问题。但是我不知道如何将位置实际放到我放弃的视图中。

1 个答案:

答案 0 :(得分:0)

工作解决方案:

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