【问题标题】:WPF DragLeave event coordinates not accurateWPF DragLeave 事件坐标不准确
【发布时间】:2018-02-01 12:06:27
【问题描述】:

我想在 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 触发时,鼠标仍然在 Data 内部,而我从来没有达到我有正确信息来隐藏控件的地步。这个问题是否有另一种解决方案。使用 Mouse.GetPosition() 获取当前鼠标位置不起作用,因为在拖放操作时鼠标位置没有真正被跟踪。

【问题讨论】:

    标签: c# wpf drag-and-drop


    【解决方案1】:

    我认为您应该处理AViewPreviewDragLeave 事件并设置e.handled = true;,而不是处理DragLeave 事件。 这样孩子就不应该触发 DragLeave 事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-02
      • 2013-06-29
      • 2011-06-04
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多