2012-07-30 19 views
5

Ich bin mir nicht sicher, warum, aber die Drag & Drop Ereignisse auf einem HwndHost scheinen nicht zu funktionieren (eigentlich keine Ereignisse scheinen überhaupt zu arbeiten). Ich bin in der Lage, in die Windows-Nachrichten, die zum HwndHost gehen, einzuhaken, jedoch kann ich nichts Nützliches finden.WPF HwndHost Drag & Drop

Ich versuche, einen Knoten aus einer Baumansicht auf einen HwndHost ziehen zu können, die XNA-Hosting ist. Ich habe AllowDrop im HwndHost auf true gesetzt, aber es scheint nichts zu bewirken. Weiß jemand, wie ich HwndHost aktivieren kann, um ein Ziel einer Drag/Drop-Operation zu sein?

Danke!

+0

ich in immer die expression.interactivity dll aussehen würde, die Sie per Drag aufrufen können und Ereignisse in Ihrem Viewmodel fallen. Es ist eine der einfachsten Möglichkeiten, Drag & Drop mit wpf..just Google Expression Interaktivität für WPF Drag & Drop zu implementieren. Hoffe, das hilft :) – TMan

+0

Ja, ich habe das gleiche Problem. Ich habe bereits eine vollständige Architektur basierend auf AttachedEvents in Wpf und ich muss die gleiche Architektur für meine HwndHost abgeleitete Klasse wiederverwenden. Ich habe bereits alle OLE-Drag-and-Drop-Klassen (in C++/CLI) implementiert, um mit Windows Drag & Drop-Infrastruktur zu interagieren, aber ich kann aufgrund des internen DragEventArgs-Konstruktors keine Ereignisse an WPF auslösen. – nemenos

+1

Nun, ich fand eine super Hacky Workaround. Wenn Sie den HwndHost an ein DockPanel anpassen und AllowDrop für das DockPanel festlegen, können Sie auf Ereignisse statt auf HwndHost reagieren. Das DockPanel muss jedoch einen Hintergrund haben. Ich habe es mit anderen Frames/Controls versucht, und nur das DockPanel schien zu funktionieren. – Trevor

Antwort

0

Ist dieses Verhalten nur beim Ausführen unter dem Debugger?

Führen Sie Visual Studio als Administrator aus? Wenn

so lief ich vor kurzem in dieses Problem. Probieren Sie es ohne Debugging aus. Wenn das funktioniert, müssen Sie die App ausführen und sie dann anhängen, um den Drag & Drop-Code zu debuggen.

Es ist eine Sicherheitsfunktion in Windows:/