wpf在拖动控件里面时如何在容器中获取鼠标位置?

时间:2017-07-19 07:23:01

标签: wpf

我希望在将控件拖入内部时获取容器的鼠标位置,以便我可以将自动滚动逻辑添加到容器中。但是,拖动时MouseMove根本不会触发,只有在拖动控件时才会触发DragOver。

测试示例

Draggable Gizmo:

program main
implicit none
integer, allocatable, dimension(:)::test1
integer i, c1, c2
c1=10
c2=5
allocate(test1(1:c1))
!  I basically want to do this 
!allocate(test1(c1+1:c2))
end program main

容器:

let viewYouWantToAddSubviewTo = parent?.view

running result and question

或者这只是不可能?

1 个答案:

答案 0 :(得分:0)

代码中的最后一个函数应该可以运行。或者(因为在您之前不应该有其他元素处理事件),您可以使用OnDragOver方法而不是Preview

protected override void OnDragOver(DragEventArgs e)
{
    Point position = e.GetPosition(this);
}

如果它不起作用,通常意味着你的控件的特定区域不会被击中 - 可见。确保IsHitTestVisibletrue(必须是,否则子元素也不起作用),并且您的控件的Background不是null。如果您不想要背景并且仍然能够进行点击测试,请使用Transparent作为背景。