【发布时间】: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