C# WPF DragLeave事件坐标不准确

C# WPF DragLeave事件坐标不准确,c#,wpf,drag-and-drop,C#,Wpf,Drag And Drop,我想在DragEnter事件发生时显示拖动控件(DataView),并在DragLeave事件触发时隐藏它。由于控件中也有子控件,因此在进入子控件时也会触发leave事件。因此,我决定仅在控件接收到DragLeave事件且鼠标不在完整的拖动控件内时隐藏控件: private void AView_DragLeave(object sender, DragEventArgs e) { var aPosition = e.GetPosition(DataView); bool I

我想在DragEnter事件发生时显示拖动控件(DataView),并在DragLeave事件触发时隐藏它。由于控件中也有子控件,因此在进入子控件时也会触发leave事件。因此,我决定仅在控件接收到DragLeave事件且鼠标不在完整的拖动控件内时隐藏控件:

private void AView_DragLeave(object sender, DragEventArgs e)
{
    var aPosition = e.GetPosition(DataView);

     bool IsInside = (aPosition.X >= 5) && (aPosition.X < DataView.ActualWidth - 5) && (aPosition.Y >= 5) &&
                    (aPosition.Y < DataView.ActualHeight - 5);

    DataView.Opacity = IsInside ? 1 : 0;
}
private void AView\u DragLeave(对象发送方,DragEventArgs e)
{
变量位置=e.GetPosition(数据视图);
bool-IsInside=(aPosition.X>=5)和&(aPosition.X=5)&&
(位置Y

现在的问题是,当DragLeave启动时,鼠标仍在数据中,我从来没有找到正确的信息来隐藏控件。这个问题还有别的解决办法吗。使用mouse.GetPosition()获取当前鼠标位置不起作用,因为在拖放操作时没有真正跟踪鼠标位置。

我认为与其处理
DragLeave
事件,不如处理
AView
PreviewDragLeave
事件并设置
e.handled=true。
这样,孩子们就不应该触发
DragLeave
事件