Как включить перетаскивание в окне инструментов VSPackage? - PullRequest
1 голос
/ 27 июня 2011

У меня есть пользовательский элемент управления WPF, который обеспечивает функцию перетаскивания в этом элементе управления.Когда пользовательский элемент управления размещен в приложении WPF, все работает нормально.Однако, когда он размещен в 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 Ответ

1 голос
/ 28 июня 2011

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

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