Ich habe eine WPF 4-App, die Drag & Drop ermöglichen soll, derzeit habe ich es mit einer einfachen Drag & Drop-Implementierung zu tun, aber ich habe festgestellt, dass es viel besser wäre, wenn sich der Mauszeiger nicht ändert Um die Bewegungsoperation darzustellen, könnte ich ein Bild unter meinem Finger verwenden.
Ich kann nicht scheinen, irgendwelche Proben oder doco zu finden, die dieses out-of-the-box funktioniert hat, also ich nehme an, ich werde es kundenspezifisch machen müssen ... irgendwelche Ideen?
Meine Drag & Drop-Operation wird in einem benutzerdefinierten Benutzersteuerelement gestartet, daher muss ich ein visuelles Element in den visuellen Baum einfügen und es meinem Finger folgen lassen, vielleicht sollte ich das ManipulationDelta
-Ereignis in meinem Hauptfenster aktivieren , nach einem booleschen Objekt suchen und dann das Objekt bewegen?
Ich würde nur Ideen an dieser Stelle herumwerfen, jede Hilfe oder Ideen würde sehr geschätzt werden.
Prost, Markiere
Es gibt ein Beispiel für die Verwendung eines benutzerdefinierten Zieh-Cursors bei Jaime Rodriguez MSDN Blog . Sie können das GiveFeedback
verarbeiten Ereignis und ändern Sie den Mauszeiger, aber um ein benutzerdefiniertes Visual zu verwenden, erstellt der Autor ein neues Fenster und aktualisiert die Position auf QueryContinueDrag
.
Aus dem erwähnten Artikel konnte ich ein wenig vereinfachen. Grundsätzlich müssen Sie in 3 Veranstaltungen abonnieren:
DragDrop.DoDragDrop
aufrufen.
AllowDrop
auf true
festgelegt haben, um Drops zu akzeptieren) DragDrop.DoDragDrop(draggedItem, draggedItem.DataContext, DragDropEffects.Move);
Der erste Parameter ist das Element, das Sie ziehen, dann das zweite die Daten, die es enthält, und den Mauseffekt.
Diese Methode sperrt den Thread. So wird alles nach seinem Aufruf nur ausgeführt, wenn Sie mit dem Ziehen aufhören.
Im Drop-Ereignis können Sie die Daten abrufen, die Sie über den DoDragDrop
-Aufruf gesendet haben.
Die Quelle für meine Tests befindet sich unten, und das Ergebnis ist:
Beispiel ziehen und loslassen (gif)
MainWindow.xaml
%Vor%Card.xaml
%Vor%MainWindow.xaml.cs
%Vor%Card.xaml.cs
%Vor%Tags und Links wpf .net-4.0 drag-and-drop