2011-06-27 41 views
1

我有一個WPF用戶控件,提供該控件中的拖放功能。當用戶控件託管在WPF應用程序中時,一切正常。但是,當它位於VSPackageToolWindow內時,drop完全被禁用。如何在VSPackage ToolWindow中啓用拖放操作?

在這種特殊情況下,我試圖將可拖動列表框(下圖左側)中的選定項目拖動到右側的畫布上。

enter image description here

拖拽可以DoDragDrop啓動,如:

protected override void OnMouseMove(MouseEventArgs e) 
    { 
     base.OnMouseMove(e); 
     if (e.LeftButton != MouseButtonState.Pressed) 
      dragStartPoint = null; 

     if (dragStartPoint.HasValue) 
     { 
      DragDrop.DoDragDrop(this, Content, DragDropEffects.Copy); 
      e.Handled = true; 
     } 
    } 

但隨後降不工具窗口中任何地方。

什麼樣的條件可以防止在工具窗口內拖放,以及需要進行哪些設置更改?

回答

1

答案在Alin Constantin's Blog中找到,並在MSDN上由用戶Notre指出。我需要處理所有拖放相關的事件,以便VS shell不會攔截它們。在我的情況下,我需要在Canvas控件中處理DragOver事件:

protected override void OnDragOver(DragEventArgs e) 
    { 
     base.OnDragOver(e); 
     e.Handled = true; 
    }