1

我有一个 WPF 用户控件,它在该控件中提供拖放功能。当用户控件托管在 WPF 应用程序中时,一切正常。但是,当它托管在 a中时VSPackage ToolWindow,drop 完全被禁用。

在这种特殊情况下,我试图将可拖动列表框(下图左侧)中的选定项目拖动到右侧的画布上。

在此处输入图像描述

可以使用 启动拖动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;
        }
    }

但是在工具窗口的任何地方都不允许放置。

什么样的条件会阻止在工具窗口中拖放,以及启用它需要哪些设置更改?

4

1 回答 1

1

答案在Alin Constantin 的博客中找到,并由MSDN 上的用户Notre指出。我需要处理所有与拖放相关的事件,以便 VS shell 不会拦截它们。就我而言,我需要处理控件DragOver中的事件Canvas

    protected override void OnDragOver(DragEventArgs e)
    {
        base.OnDragOver(e);
        e.Handled = true;
    }
于 2011-06-28T02:17:14.053 回答