我想在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()获取当前鼠标位置不起作用,因为在拖放操作时未实际跟踪鼠标位置。
答案 0 :(得分:0)
我认为您应该处理DragLeave
的{{1}}事件并设置PreviewDragLeave
,而不是处理AView
事件。
这样孩子就不应该发起e.handled = true;
事件。