WPF DragLeave事件坐标不准确

时间:2018-02-01 12:06:28

标签: c# wpf drag-and-drop

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

现在的问题是当DragLeave触发时,鼠标仍然在数据中,我从来没有达到我有正确信息来隐藏控件的程度。是否有另一种解决此问题的方法。使用Mouse.GetPosition()获取当前鼠标位置不起作用,因为在拖放操作时未实际跟踪鼠标位置。

1 个答案:

答案 0 :(得分:0)

我认为您应该处理DragLeave的{​​{1}}事件并设置PreviewDragLeave,而不是处理AView事件。 这样孩子就不应该发起e.handled = true;事件。