【问题标题】:Why my WPF application has Drag & Drop disabled (even when AllowDrop is true)?为什么我的 WPF 应用程序禁用了拖放(即使 AllowDrop 为真)?
【发布时间】:2013-08-04 10:38:21
【问题描述】:

我的 WPF 应用程序禁止从 Windows 资源管理器中删除文件,显示一个停止符号光标。

我尝试在主窗口和包含控件上将 AllowDrop 属性(UIElement 祖先的属性)设置为 true,但完全没有运气,没有触发拖放事件。

有什么想法或建议可以找到原因吗?

【问题讨论】:

  • 你能提供一些代码来展示你的实现吗?
  • 我无法提供代码,因为它很大(很多自定义 wpf 控件)。我需要一些观点或线索来面对这个问题,从哪里开始寻找解决方案。
  • 您的应用的信任级别是多少?
  • @GarryVass 我的应用程序具有 WPF 桌面应用程序的默认信任级别。它不是用于 Web 部署的 XBAP 应用程序,因此我相信它具有完全的信任。

标签: wpf drag-and-drop


【解决方案1】:

解决了!

问题是通过 VisualStudio(运行/调试)执行我的应用程序阻止了与 Windows 的拖放机制的互操作。以独立方式运行应用程序可以使其工作,但不能以交互方式调试。

这个答案很有帮助: Visual Studio 2010 WPF Project ran in debug or relase will not allow drag and drop to any control

【讨论】:

  • 至少可以附加到进程,然后打断点。
【解决方案2】:

在我的例子中,它在 Windows 10 上以管理员身份运行 Visual Studio。UAC 阻止了拖放。当我在不提升拖放功能的情况下运行 VS 时开始在调试模式下工作。

【讨论】:

  • stambikk,你帮我节省了几个小时!
  • 这真是奇怪的行为,但你是对的。感谢您找到这个。
  • 这是因为在调试模式下运行您的应用程序的用户与打开 Windows 资源管理器窗口的用户不同。同样的原因,您的应用程序的调试版本不会看到网络驱动器。经过 2 个多小时的 Google 搜索后,我偶然发现了这一点。终于有道理了。
【解决方案3】:

据此:http://codeinreview.com/136/enabling-drag-and-drop-over-a-grid-in-wpf/ (我很高兴报告作品!)

您需要做的就是在控件上添加一个背景,该控件必须获得拖放。这将启用命中测试,从而使丢弃功能发挥作用。

注意:背景可以是透明的,你只需要设置它。

【讨论】:

  • 当然,报告的问题发生在有背景的情况下(即,它不是试图达到透明效果的花哨的无背景 UI)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多