4 Stimmen

Drag Drop innerhalb WPF ToolWindow in VS2010 Erweiterung nicht erlaubt

Ich habe hier ein seltsames Problem. Ich habe ein einfaches Plugin mit Hilfe des Assistenten für ein Visual Studio Integration Package / VSIX-Projekt mit einem Toolfenster erstellt. In diesem Fenster möchte ich ein einfaches Ziehen/Ablegen aus einer Listbox und Ablegen im selben Fenster durchführen. Ich habe das Gleiche in einem normalen WPF-Programm getan, aber wenn ich dies in einem WS-Toolfenster tue, ist es nicht erlaubt. Ich starte den Ziehen/Ablegen-Vorgang (eingeleitet durch ein PreviewMouseLeftButtonDown Ereignis) und rufen die DragDrop.DoDragDrop() Methode, erhalte ich sofort den Stoppschild-Cursor. Kein Ziehen erlaubt.

Irgendwelche Ideen? Sicherheitsbeschränkungen oder eine Auswirkung der Tatsache, dass diese WPF-Steuerelemente innerhalb eines ToolWindowPane und alten Visual Studio IDE COM-Zeug gehostet werden, ich denke... Vielen Dank für jede Hilfe!

6voto

Johan Danforth Punkte 4301

Alin Constantin von Microsoft hat mir hier geholfen und sogar einen Blogbeitrag darüber geschrieben, wie man Drag/Drop in VS2010 richtig ausführt!

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


Hervorhebungen, im Falle von Link Rot:

In Ihrem Werkzeugfenster (dem UserControl) überschreiben Sie OnDragEnter , OnDragOver ( wichtig! ) und OnDrop . Versäumnis der Außerkraftsetzung OnDragOver wird das Ziehen/Ablegen fehlschlagen.

Unter OnDragEnter gehen Sie wie folgt vor:

  1. Prüfen Sie, ob Sie den Fall bewältigen können
  2. Wenn ja, setzen Sie DragEventArgs.Handled a true y DragEventArgs.Effects auf den entsprechenden Wert
  3. Rufen Sie an. base.OnDragEnter()

Unter OnDragOver müssen Sie Folgendes tun das Gleiche als OnDragEnter . Wenn Sie es versäumen, die Handled wird Visual Studio übernehmen und Sie werden nicht mehr in der Lage sein, den Drop zu bewältigen!

Unter OnDrop ,

  1. Umgang mit dem Tropfen
  2. Satz DragEventArgs.Handled a true
  3. Rufen Sie an. base.OnDrop()

Denken Sie daran, dass nicht die Handhabung OnDragOver führt dazu, dass Visual Studio den Ziehvorgang übernimmt und Sie nicht mehr die Möglichkeit haben, ihn in OnDrop .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X