Перетаскивание в WPF ToolWindow в расширении VS2010 не разрешено - PullRequest
4 голосов
/ 29 января 2010

У меня здесь странная проблема. Я создал простой плагин с помощью мастера для проекта пакета интеграции Visual Studio / VSIX с окном инструментов. В этом окне я хочу сделать простое перетаскивание из списка и вставить в то же окно. Я сделал то же самое в обычной программе WPF, но когда я делаю это в окне инструментов WS, это не разрешается. Я запускаю операцию перетаскивания (инициированную событием PreviewMouseLeftButtonDown) и вызываю метод DragDrop.DoDragDrop(), я сразу получаю курсор-стоп. Перетаскивание не допускается.

Есть идеи? Ограничения безопасности или влияние того факта, что эти элементы управления WPF размещены внутри ToolWindowPane и старых вещей Visual Studio IDE COM, я думаю ... Спасибо за любую помощь!

1 Ответ

6 голосов
/ 05 февраля 2010

Алин Константин из Microsoft помог мне здесь и даже написал пост в блоге о том, как правильно выполнять перетаскивание в VS2010!

http://alinconstantin.blogspot.com/2010/02/drag-and-drop-in-visual-studio-2010.html


Основные моменты, в случае гниения ссылки:

В вашем окне инструментов (UserControl) переопределите OnDragEnter, OnDragOver ( важно! ) и OnDrop. Неспособность переопределить OnDragOver приведет к сбою перетаскивания.

В OnDragEnter выполните следующее:

  1. Проверьте, можете ли вы справиться с падением
  2. Если это так, установите DragEventArgs.Handled на true и DragEventArgs.Effects на соответствующее значение
  3. Звоните base.OnDragEnter()

В OnDragOver вы должны сделать то же самое , что и OnDragEnter. Если вам не удастся установить Handled, Visual Studio вступит во владение, и вы не сможете справиться с падением!

В OnDrop,

  1. Обработка капли
  2. Установите DragEventArgs.Handled на true
  3. Звоните base.OnDrop()

Помните, что не обработка OnDragOver приведет к тому, что Visual Studio примет операцию перетаскивания, лишив вас возможности обрабатывать ее в OnDrop.

...