在VS2010扩展中不允许在WPF ToolWindow中拖放

Joh*_*rth 4 wpf vsx visual-studio-2010 vsip

我这里有一个奇怪的问题.我使用向导创建了一个简单的插件,用于带有工具窗口的Visual Studio集成包/ VSIX项目.在该窗口中,我想从列表框中进行简单的拖放操作并放在同一窗口中.我在普通的WPF程序中做了同样的事情,但是当我在WS工具窗口中执行此操作时,它是不允许的.我开始拖放操作(由PreviewMouseLeftButtonDown事件启动)并调用DragDrop.DoDragDrop()方法,我立即得到stop-sign-cursor.不允许拖动.

有任何想法吗?安全限制或这些WPF控件托管在ToolWindowPane和旧的Visual Studio IDE COM中的事实的影响我猜...感谢任何帮助!

Joh*_*rth 6

微软的Alin Constantin帮助我在这里,甚至写了一篇关于如何在VS2010中正确拖放的博客文章!

http://alinconstantin.blogspot.com/2010/02/drag-and-drop-in-visual-studio-2010.html


链接腐烂时的亮点:

在你的工具窗口(UserControl)中,覆盖OnDragEnter,OnDragOver(重要!)和OnDrop.未能覆盖OnDragOver将导致拖放失败.

OnDragEnter,执行以下操作:

  1. 检查是否可以处理跌落
  2. 如果是这样,请设置DragEventArgs.HandledtrueDragEventArgs.Effects适当的值
  3. 呼叫 base.OnDragEnter()

OnDragOver,你必须做同样的事情OnDragEnter.如果您未能设置Handled,Visual Studio将接管并且您将无法处理掉线!

OnDrop,

  1. 处理掉落
  2. 设置DragEventArgs.Handledtrue
  3. 呼叫 base.OnDrop()

请记住,不处理OnDragOver将导致Visual Studio接管拖动操作,从而拒绝您处理它的能力OnDrop.