我有一个WPF用户控件,可在该控件中提供拖放功能。当用户控件托管在WPF应用程序中时,一切正常。但是,如果将其托管在VSPackage
ToolWindow
内,则会完全禁用丢弃。
在这种特殊情况下,我试图将可拖动列表框中的选定项目(下图左侧)拖动到右侧的画布上。
可以使用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;
}
}
但是在工具窗口的任何地方都不允许掉线。
什么样的条件会阻止工具窗口内的拖放,以及启用它需要进行哪些设置更改?
答案 0 :(得分:1)
答案在Alin Constantin's Blog中找到,并在MSDN上由用户Notre指出。我需要处理所有拖放相关的事件,以便VS shell不会拦截它们。就我而言,我需要处理DragOver
控件中的Canvas
事件:
protected override void OnDragOver(DragEventArgs e)
{
base.OnDragOver(e);
e.Handled = true;
}