C# WPF DragLeave事件坐标不准确
我想在DragEnter事件发生时显示拖动控件(DataView),并在DragLeave事件触发时隐藏它。由于控件中也有子控件,因此在进入子控件时也会触发leave事件。因此,我决定仅在控件接收到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
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
事件