首页 > 解决方案 > 移出 WPF 窗口时 WPF 拖放 DragDropEffects 发生变化

问题描述

我有一个 WPF 应用程序,我在其中拖动一个文件对象。它可以拖放到应用程序内部的几个窗口中,也可以从外部拖放到资源管理器中,然后放到桌面和其他一些地方。

拖放操作工作正常,但 DragDropEffect 仅在应用程序窗口内正确显示。当光标移出应用程序窗口时,我会看到“verboten”图标 - 大多数情况下。取决于光标在大多数情况下离开应用程序的方式,我得到了斜线圆圈。但有时它会正确地继续拖动复制图标。

var files = new[] {editor.MarkdownDocument.Filename} ;
var dragData = new DataObject(DataFormats.FileDrop,files);

DragDrop.DoDragDrop(tab, dragData, DragDropEffects.Copy);

如前所述,shell 的代码和处理工作正常 - 文件被复制,只有拖动图标才是问题所在。

我可以控制应用程序内部的拖动图标,在窗口上没有问题,但我无法控制在它之外发生的事情。

那么如何在 WPF 外部可靠地控制拖动图标呢?

标签: c#wpfdrag-and-drop

解决方案


https://docs.microsoft.com/en-us/dotnet/api/system.windows.dragdrop.givefeedback

DragDrop.GiveFeedback += SetTheCursorHere;

您应该(根据 Microsoft 的文档)缓存光标等,因为在拖动时会一遍又一遍地调用它,并且您不想在拖动时加载资源。


推荐阅读