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

时间:2010-01-28 21:30:00

标签: wpf visual-studio-2010 vsx vsip

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

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

1 个答案:

答案 0 :(得分:6)

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

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


如果链接腐烂,请注意:

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

OnDragEnter中,执行以下操作:

  1. 检查您是否可以处理掉落
  2. 如果是,请将DragEventArgs.Handled设为true,将DragEventArgs.Effects设为适当的值
  3. 致电base.OnDragEnter()
  4. OnDragOver中,您必须与OnDragEnter执行相同的操作。如果您未能设置Handled,Visual Studio将接管并且您将无法处理掉线!

    OnDrop

    1. 处理掉落
    2. DragEventArgs.Handled设为true
    3. 致电base.OnDrop()
    4. 请记住,不处理OnDragOver将导致Visual Studio接管拖动操作,从而使您无法在OnDrop中处理它。