【发布时间】:2021-08-09 09:51:36
【问题描述】:
我已经在我的 WPF 应用程序中实现了拖动到外部应用程序,并且它可以工作。然而,在我将光标放回目标后,我继续在 my 应用程序上收到虚假的拖放事件。这会“永远”持续下去。
据我在调用 DragDrop.DoDragDrop() 后从在线搜索中得知,我不需要做任何其他事情。我尝试添加一些代码来取消事件,但即使它运行也没有效果:
private void UIElement_OnPreviewMouseMove(object sender, MouseEventArgs e)
{
var frameworkElement = (FrameworkElement) sender;
if (frameworkElement.DataContext is IDragSource dragSource)
{
var position = e.GetPosition((IInputElement) sender);
if (dragSource.DragCanStart(new Point {X = position.X, Y = position.Y}))
{
var dragStart = true;
void OnFrameworkElementOnQueryContinueDrag(object o, QueryContinueDragEventArgs e2)
{
if (!dragStart)
{
e2.Action = DragAction.Cancel;
frameworkElement.QueryContinueDrag -= OnFrameworkElementOnQueryContinueDrag;
}
}
frameworkElement.QueryContinueDrag += OnFrameworkElementOnQueryContinueDrag;
dragSource.DragInitiate(sender);
e.Handled = true;
dragStart = false;
}
}
}
【问题讨论】:
标签: wpf drag-and-drop