Как включить перетаскивание в VSPackage ToolWindow?

У меня есть пользовательский элемент управления 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;
        }
    }

Но тогда падение не допускается нигде в окне инструментов.

Какие условия предотвратят перетаскивание в окне инструментов и какие изменения настроек необходимы для его включения?


person Dave Clemmer    schedule 27.06.2011    source источник


Ответы (1)


Ответ был найден в Блог Алина Константина и указан пользователем Notre в MSDN. Мне нужно было обрабатывать ВСЕ события, связанные с перетаскиванием, чтобы оболочка VS не перехватывала их. В моем случае мне нужно было обработать событие DragOver в элементе управления Canvas:

    protected override void OnDragOver(DragEventArgs e)
    {
        base.OnDragOver(e);
        e.Handled = true;
    }
person Dave Clemmer    schedule 28.06.2011