WPF HwndHost 拖放

5
我不确定为什么,在HwndHost上的拖放事件似乎无法正常工作(实际上没有任何事件可以正常工作)。我能够钩住发往HwndHost的Windows消息,但是我似乎找不到有用的东西。
我试图能够将树形视图中的节点拖放到托管XNA的HwndHost上。我在HwndHost上将AllowDrop设置为true,但似乎没有任何效果。有谁知道如何使HwndHost成为拖放操作的目标吗?
谢谢!

我建议您获取expression.interactivity dll,它允许您在视图模型中调用拖放事件。这是使用wpf实现拖放的较为简单的方法之一。只需在谷歌上搜索“expression interactivity for wpf drag and drop”即可。希望这可以帮到您 :) - TMan
是的,我有同样的问题。我已经在Wpf中基于AttachedEvents拥有了完整的架构,并且我需要重用相同的架构来创建我的HwndHost派生类。我已经实现了所有OLE拖放类(使用c++/cli)以与Windows拖放基础设施进行交互,但由于内部DragEventArgs构造函数的原因,我无法将事件传递给WPF。 - nemenos
2
我找到了一个超级hacky的解决方法。如果你将HwndHost作为子元素添加到DockPanel中,并在DockPanel上设置AllowDrop属性,那么你可以在DockPanel上响应事件而不是在HwndHost上响应。但是,DockPanel必须有一个背景。我尝试过其他框架/控件,只有DockPanel似乎有效。 - Trevor Sundberg
是的,我尝试过使用边框来实现拖放,但这只适用于拖放事件。我想启用所有事件(mousemove、点击等)。目前我正在使用解决方法,但我希望有一种非解决方法的方式。 - nemenos
没错,我必须钩入Windows消息泵来获取鼠标事件等(然后尝试将它们转换为WPF事件的相同样式)。我认为主要问题是一旦在HwndHost上获取子元素,您将无法获取任何信息。顺便说一句,感谢您对此进行悬赏。 - Trevor Sundberg
请查看:https://groups.google.com/forum/#!forum/gong-wpf-dragdrop - Henka Programmer
1个回答

0

这种行为只在调试器下运行时出现吗?

您是否以管理员身份运行Visual Studio?

如果是的话,我最近也遇到了这个问题。尝试不使用调试运行,如果可以正常工作,那么您需要先运行应用程序,然后附加到它以调试拖放代码。

这是Windows中的安全功能 :/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接