Übersicht über Drag & Drop
Aktualisiert: April 2011
Dieses Thema enthält eine Übersicht über die Drag & Drop-Unterstützung in Windows Presentation Foundation (WPF)-Anwendungen. Drag & Drop bezeichnet im Allgemeinen eine Methode der Datenübertragung, bei der mit einer Maus (oder anderen Zeigegeräten) Objekte ausgewählt, auf das gewünschte Ablageziel in der user interface (UI) gezogen und abgelegt werden.
Dieses Thema enthält folgende Abschnitte.
- Drag & Drop-Unterstützung in WPF
- Datenübertragung
- Drag & Drop-Ereignisse
- Implementieren von Drag & Drop
- Beispiel für Drag & Drop
- Verwandte Abschnitte
Drag & Drop-Unterstützung in WPF
Bei Drag & Drop-Vorgängen sind normalerweise zwei Seiten beteiligt: eine Ziehquelle, von der das gezogene Objekt stammt, und ein Ablageziel, das das abgelegte Objekt erhält. Bei der Quelle des Ziehvorgangs und dem Ablageziel kann es sich um Benutzeroberflächenelemente in derselben oder einer anderen Anwendung handeln.
Der Typ und die Anzahl von Objekten, die mit Drag & Drop bearbeitet werden können, ist vollständig beliebig. Dateien, Ordner und ausgewählte Inhalte zählen z. B. zu den Objekten, die häufiger mit Drag & Drop-Vorgängen bearbeitet werden.
Welche Aktionen bei einem Drag & Drop-Vorgang ausgeführt werden, ist anwendungsspezifisch und hängt häufig vom Kontext ab. Beispielsweise werden beim Ziehen einer Dateiauswahl von einem Ordner zu einem anderen auf demselben Datenträger die Dateien standardmäßig verschoben. Werden Dateien hingegen von einer Universal Naming Convention (UNC)-Freigabe zu einem lokalen Ordner gezogen, werden die Dateien standardmäßig kopiert.
Die von WPF bereitgestellten Drag & Drop-Funktionen wurden für hohe Flexibilität und Anpassbarkeit konzipiert, um eine Vielzahl von Drag & Drop-Szenarien zu unterstützen. Drag & Drop unterstützt das Bearbeiten von Objekten innerhalb einer Anwendung oder zwischen verschiedenen Anwendungen. Drag & Drop-Vorgänge zwischen WPF-Anwendungen und anderen Windows-Anwendungen werden ebenfalls vollständig unterstützt.
In WPF kann jedes UIElement oder ContentElement in Drag & Drop-Vorgängen verwendet werden. Die für Drag & Drop-Vorgänge erforderlichen Ereignisse und Methoden sind in der DragDrop-Klasse definiert. Die ContentElement- und UIElement-Klassen enthalten Aliase für die angefügten DragDrop-Ereignisse, sodass die Ereignisse in der Klassenmemberliste angezeigt werden, wenn ein UIElement oder ContentElement als Basiselement geerbt wird. An diese Ereignisse angefügte Ereignishandler werden an das zugrunde liegende angefügte DragDrop-Ereignis angefügt und empfangen dieselbe Ereignisdateninstanz. Weitere Informationen finden Sie unter UIElement.Drop.
Sicherheitshinweis |
---|
Drag & Drop per OLE funktioniert nicht in der Internetzone. |
Datenübertragung
Drag & Drop gehört zum allgemeineren Bereich der Datenübertragung. Zur Datenübertragung zählen Drag & Drop- sowie Kopier- und Einfügevorgänge. Ein Drag & Drop-Vorgang entspricht einem Kopier- und Einfüge- oder Ausschneide- und Einfügevorgang, bei dem mithilfe der Zwischenablage des Systems Daten aus einem Objekt oder einer Anwendung in ein anderes Objekt bzw. eine andere Anwendung übertragen werden. Für beide Vorgangstypen ist Folgendes erforderlich:
Ein Quellobjekt, das die Daten bereitstellt
Eine Methode zum temporären Speichern der übertragenen Daten
Ein Zielobjekt, das die Daten empfängt
Bei einem Kopier- und Einfügevorgang wird die Zwischenablage des Systems verwendet, um die übertragenen Daten vorübergehend zu speichern. Bei einem Drag & Drop-Vorgang wird DataObject zum Speichern der Daten verwendet. Im Prinzip besteht ein Datenobjekt aus einem oder mehreren Paaren, die sich aus einem Object, das die tatsächlichen Daten enthält, und einem entsprechenden Datenformatbezeichner zusammensetzen.
Die Quelle des Ziehvorgangs initiiert einen Drag & Drop-Vorgang, indem Sie die statische DragDrop.DoDragDrop-Methode aufruft und die übertragenen Daten an sie übergibt. Die DoDragDrop-Methode umschließt die Daten bei Bedarf automatisch mit einem DataObject. Um das Datenformat besser steuern zu können, können Sie die Daten mit einem DataObject umschließen, bevor Sie sie an die DoDragDrop-Methode übergeben. Das Ablageziel ist für das Extrahieren der Daten aus dem DataObject zuständig. Weitere Informationen zum Arbeiten mit Datenobjekten finden Sie unter Daten und Datenobjekte.
Die Quelle und das Ziel eines Drag & Drop-Vorgangs sind Benutzeroberflächenelemente. Die tatsächlich übertragenen Daten verfügen in der Regel jedoch nicht über eine visuelle Darstellung. Sie können Code schreiben, um eine visuelle Darstellung der gezogenen Daten bereitzustellen (wie beim Ziehen von Dateien in Windows-Explorer der Fall). Standardmäßig wird die Auswirkung des Drag & Drop-Vorgangs für den Benutzer durch eine Änderung des Cursors dargestellt, der z. B. zu entnehmen ist, ob die Daten verschoben oder kopiert werden.
Auswirkungen von Drag & Drop-Vorgängen
Drag & Drop-Vorgänge können sich unterschiedlich auf die übertragenen Daten auswirken. Sie können die Daten z. B. kopieren oder verschieben. WPF definiert eine DragDropEffects-Enumeration, mit der Sie die Auswirkung eines Drag & Drop-Vorgangs angeben können. In der Quelle des Ziehvorgangs können Sie die Auswirkungen angeben, die die Quelle in der DoDragDrop-Methode zulässt. Im Ablageziel können Sie die Auswirkungen angeben, die das Ziel in der Effects-Eigenschaft der DragEventArgs-Klasse vorsieht. Wenn das Ablageziel die beabsichtigte Auswirkung im DragOver-Ereignis angibt, werden diese Informationen im GiveFeedback-Ereignis an die Quelle des Ziehvorgangs zurückgegeben. Die Quelle des Ziehvorgangs verwendet diese Informationen, um den Benutzer über die Auswirkungen des Ablageziels auf die Daten zu informieren. Wenn die Daten abgelegt werden, gibt das Ablageziel die tatsächliche Auswirkung im Drop-Ereignis an. Diese Informationen werden als Rückgabewert der DoDragDrop-Methode an die Quelle des Ziehvorgangs übergeben. Wenn das Ablageziel eine Auswirkung zurückgibt, die nicht in der allowedEffects-Liste der Quelle des Ziehvorgangs enthalten ist, wird der Drag & Drop-Vorgang abgebrochen, ohne Daten zu übertragen.
Wichtig ist hierbei, dass die DragDropEffects-Werte in WPF nur verwendet werden, um die Kommunikation bezüglich der Auswirkungen des Drag & Drop-Vorgangs zwischen der Quelle des Ziehvorgangs und dem Ablageziel bereitzustellen. Die tatsächliche Auswirkung des Drag & Drop-Vorgangs hängt davon ab, dass Sie den entsprechenden Code in der Anwendung schreiben.
Das Ablageziel kann z. B. angeben, dass die Daten durch das Ablegen verschoben werden. Um die Daten zu verschieben, müssen sie jedoch dem Zielelement hinzugefügt und aus dem Quellelement entfernt werden. Auch wenn das Quellelement das Verschieben der Daten zulässt, werden die Daten nicht verschoben, sondern kopiert, wenn Sie den Code zum Entfernen der Daten aus dem Quellelement nicht bereitstellen.
Drag & Drop-Ereignisse
Drag & Drop-Vorgänge unterstützen ein ereignisgesteuertes Modell. Ziehquelle und Ablageziel verwenden einen Standardsatz von Ereignissen zum Behandeln von Drag & Drop-Vorgängen. Die folgende Tabelle bietet einen Überblick über die Standard-Drag & Drop-Ereignisse. Dies sind angefügte Ereignisse der DragDrop-Klasse. Weitere Informationen zu angefügten Ereignissen finden Sie unter Übersicht über angefügte Ereignisse.
Ereignisse für die Ziehquelle
Ereignis |
Zusammenfassung |
---|---|
[ E:System.Windows.DragDrop.GiveFeedback ] |
Dieses Ereignis tritt während eines Drag & Drop-Vorgangs kontinuierlich auf und ermöglicht es der Quelle des Ziehvorgangs, dem Benutzer Feedback zu geben. Dieses Feedback erfolgt im Allgemeinen durch eine Änderung der Darstellung des Mauszeigers, die die vom Ablageziel erlaubten Auswirkungen angibt. Hierbei handelt es sich um ein Bubbling-Ereignis. |
[ E:System.Windows.DragDrop.QueryContinueDrag ] |
Dieses Ereignis tritt auf, wenn sich während eines Drag & Drop-Vorgangs der Zustand von Tastatur oder Maustasten ändert. Hierdurch kann die Ablagequelle den Drag & Drop-Vorgang abhängig vom Zustand der Tastatur bzw. Maustasten abbrechen. Hierbei handelt es sich um ein Bubbling-Ereignis. |
[ E:System.Windows.DragDrop.PreviewGiveFeedback ] |
Tunneling-Version von GiveFeedback. |
[ E:System.Windows.DragDrop.PreviewQueryContinueDrag ] |
Tunneling-Version von QueryContinueDrag. |
Ereignisse für das Ablageziel
Ereignis |
Zusammenfassung |
---|---|
[ E:System.Windows.DragDrop.DragEnter ] |
Dieses Ereignis tritt auf, wenn ein Objekt in die Begrenzung des Ablageziels gezogen wird. Hierbei handelt es sich um ein Bubbling-Ereignis. |
[ E:System.Windows.DragDrop.DragLeave ] |
Dieses Ereignis tritt auf, wenn ein Objekt aus der Begrenzung des Ablageziels gezogen wird. Hierbei handelt es sich um ein Bubbling-Ereignis. |
[ E:System.Windows.DragDrop.DragOver ] |
Dieses Ereignis tritt kontinuierlich auf, während ein Objekt innerhalb der Grenzen des Ablageziels gezogen (bewegt) wird. Hierbei handelt es sich um ein Bubbling-Ereignis. |
[ E:System.Windows.DragDrop.Drop ] |
Dieses Ereignis tritt auf, wenn ein Objekt auf dem Ablageziel abgelegt wird. Hierbei handelt es sich um ein Bubbling-Ereignis. |
[ E:System.Windows.DragDrop.PreviewDragEnter ] |
Tunneling-Version von DragEnter. |
[ E:System.Windows.DragDrop.PreviewDragLeave ] |
Tunneling-Version von DragLeave. |
[ E:System.Windows.DragDrop.PreviewDragOver ] |
Tunneling-Version von DragOver. |
[ E:System.Windows.DragDrop.PreviewDrop ] |
Tunneling-Version von Drop. |
Um Drag & Drop-Ereignisse für Instanzen eines Objekts zu behandeln, fügen Sie Handler für die in den vorangehenden Tabellen aufgeführten Ereignisse hinzu. Um Drag & Drop-Ereignisse auf Klassenebene zu behandeln, überschreiben Sie die entsprechenden virtuellen On*Event- und On*PreviewEvent-Methoden. Weitere Informationen finden Sie unter Klassenbehandlung von Routingereignissen durch Steuerelement-Basisklassen.
Implementieren von Drag & Drop
Ein Benutzeroberflächenelement kann eine Quelle eines Ziehvorgangs und/oder ein Ablageziel sein. Zum Implementieren grundlegender Drag & Drop-Funktionen schreiben Sie Code, um den Drag & Drop-Vorgang zu initiieren und die abgelegten Daten zu verarbeiten. Sie können die Benutzerfreundlichkeit von Drag & Drop-Vorgängen verbessern, indem Sie optionale Drag & Drop-Ereignisse behandeln.
Zum Implementieren grundlegender Drag & Drop-Funktionen führen Sie die folgenden Aufgaben aus:
Identifizieren Sie das Element, das als Quelle des Ziehvorgangs fungiert. Eine Quelle des Ziehvorgangs kann ein UIElement oder ein ContentElement sein.
Erstellen Sie einen Ereignishandler für die Quelle des Ziehvorgangs, der den Drag & Drop-Vorgang initiiert. Das Ereignis ist meist das MouseMove-Ereignis.
Rufen Sie im Ereignishandler der Quelle des Ziehvorgangs die DoDragDrop-Methode auf, um den Drag & Drop-Vorgang zu initiieren. Geben Sie im DoDragDrop-Aufruf die Quelle des Ziehvorgangs, die zu übertragenden Daten und die zulässigen Auswirkungen an.
Identifizieren Sie das Element, das als Ablageziel fungiert. Ein Ablageziel kann ein UIElement oder ein ContentElement sein.
Legen Sie die AllowDrop-Eigenschaft des Ablageziels auf true fest.
Erstellen Sie im Ablageziel einen Drop-Ereignishandler zum Verarbeiten der abgelegten Daten.
Extrahieren Sie im Drop-Ereignishandler die Daten aus DragEventArgs, indem Sie die GetDataPresent- und GetData-Methoden verwenden.
Verwenden Sie im Drop-Handler die Daten, um den gewünschten Drag & Drop-Vorgang auszuführen.
Sie können die Drag & Drop-Implementierung verbessern, indem Sie wie in den folgenden Aufgaben beschrieben ein benutzerdefiniertes DataObject erstellen und optionale Ereignisse für die Quelle des Ziehvorgangs und das Ablageziel behandeln:
Um benutzerdefinierte Daten oder mehrere Datenelemente zu übertragen, erstellen Sie ein DataObject, das an die DoDragDrop-Methode übergeben wird.
Um während eines Ziehvorgangs zusätzliche Aktionen auszuführen, behandeln Sie die DragEnter-, DragEnter- und DragEnter-Ereignisse für das Ablageziel.
Um die Darstellung des Mauszeigers zu ändern, behandeln Sie das GiveFeedback-Ereignis für die Quelle des Ziehvorgangs.
Um die Vorgehensweise zum Abbrechen des Drag & Drop-Vorgangs zu ändern, behandeln Sie das QueryContinueDrag-Ereignis für die Quelle des Ziehvorgangs.
Beispiel für Drag & Drop
In diesem Abschnitt wird beschrieben, wie Sie Drag & Drop für ein Ellipse-Element implementieren. Ellipse ist sowohl eine Quelle des Ziehvorgangs als auch ein Ablageziel. Die übertragenen Daten sind die Zeichenfolgendarstellung der Fill-Eigenschaft der Ellipse. Der folgende XAML-Code zeigt das Ellipse-Element und die von ihm behandelten zugehörigen Drag & Drop-bezogenen Ereignisse. Ausführliche Schritte zum Implementieren von Drag & Drop finden Sie unter Exemplarische Vorgehensweise: Aktivieren der Drag & Drop-Funktion auf einem Benutzersteuerelement.
Einrichten eines Elements als Quelle des Ziehvorgangs
Ein Objekt, das als Quelle des Ziehvorgangs fungiert, ist für Folgendes zuständig:
Identifizieren eines Ziehvorgangs
Initiieren des Drag & Drop-Vorgangs
Identifizieren der zu übertragenden Daten
Angeben der zulässigen Auswirkungen des Drag & Drop-Vorgangs auf die übertragenen Daten
Die Quelle des Ziehvorgangs kann dem Benutzer auch Feedback zu den zulässigen Aktionen (Verschieben, Kopieren, keine) geben und den Drag & Drop-Vorgang basierend auf weiteren Benutzereingaben (z. B. Drücken der ESC-TASTE) während des Ziehens abbrechen.
Die Anwendung muss feststellen, wann ein Ziehvorgang stattfindet, und dann den Drag & Drop-Vorgang durch Aufrufen der DoDragDrop-Methode initiieren. In der Regel ist dies der Zeitpunkt, zu dem bei gedrückter Maustaste ein MouseMove-Ereignis für das zu ziehende Element auftritt. Im folgenden Beispiel wird gezeigt, wie ein Drag & Drop-Vorgang vom MouseMove-Ereignishandler eines Ellipse-Elements initiiert wird, um das Element zu einer Quelle des Ziehvorgangs zu machen. Die übertragenen Daten sind die Zeichenfolgendarstellung der Fill-Eigenschaft der Ellipse.
Rufen Sie im MouseMove-Ereignishandler die DoDragDrop-Methode auf, um den Drag & Drop-Vorgang zu initiieren. Die DoDragDrop-Methode akzeptiert drei Parameter:
dragSource – Ein Verweis auf das Abhängigkeitsobjekt, das die Quelle der übertragenen Daten ist. Dies ist in der Regel die Quelle des MouseMove-Ereignisses.
data – Ein Objekt, das die übertragenen Daten enthält, umschlossen mit einem DataObject.
allowedEffects – Einer der DragDropEffects-Enumerationswerte, der die zulässigen Auswirkungen des Drag & Drop-Vorgang angibt.
An den data-Parameter können alle serialisierbaren Objekte übergeben werden. Wenn die Daten nicht bereits mit einem DataObject umschlossen sind, werden sie automatisch mit einem neuen DataObject umschlossen. Um mehrere Datenelemente zu übergeben, müssen Sie das DataObject selbst erstellen und an die DoDragDrop-Methode übergeben. Weitere Informationen finden Sie unter Daten und Datenobjekte.
Der allowedEffects-Parameter wird verwendet, um die Aktionen anzugeben, die die Quelle des Ziehvorgangs am Ablageziel für die übertragenen Daten zulässt. Die allgemeinen Werte für eine Quelle des Ziehvorgangs sind Copy, Move und All.
Hinweis |
---|
Das Ablageziel kann außerdem angeben, welche Auswirkungen es als Reaktion auf die abgelegten Daten vorsieht.Wenn das Ablageziel den abzulegenden Datentyp z. B. nicht erkennt, kann es die Daten ablehnen, indem es die zulässigen Auswirkungen auf None festlegt.Dies geschieht normalerweise im DragOver-Ereignishandler. |
Eine Quelle des Ziehvorgangs kann optional die QueryContinueDrag- und GiveFeedback-Ereignisse behandeln. Diese Ereignisse verfügen über Standardhandler, die verwendet werden, sofern sie die Ereignisse nicht als behandelt markieren. Sofern das Standardverhalten nicht aus einem bestimmten Grund geändert werden muss, werden diese Ereignisse normalerweise ignoriert.
Das GiveFeedback-Ereignis wird kontinuierlich ausgelöst, während die Quelle des Ziehvorgangs gezogen wird. Der standardmäßige Handler für dieses Ereignis überprüft, ob die Quelle des Ziehvorgangs über ein gültiges Ablageziel verfügt. Wenn dies der Fall ist, überprüft er die zulässigen Auswirkungen des Ablageziels. Anschließend gibt er dem Benutzer Feedback zu den zulässigen Auswirkungen des Ablagevorgangs. Dazu wird in der Regel die Darstellung des Mauszeigers geändert, um anzuzeigen, das kein Ablegen, Kopieren oder Verschieben möglich ist. Dieses Ereignis sollte nur behandelt werden, wenn Sie benutzerdefinierte Cursor für das Benutzerfeedback verwenden müssen. Wenn Sie dieses Ereignis behandeln, müssen Sie es als behandelt markieren, damit Ihr Handler nicht vom Standardhandler überschrieben wird.
Das QueryContinueDrag-Ereignis wird kontinuierlich ausgelöst, während die Quelle des Ziehvorgangs gezogen wird. Sie können dieses Ereignis behandeln, um basierend auf dem Status der ESC-, UMSCHALT-, STRG- und ALT-Tasten sowie der Maustasten zu bestimmen, durch welche Aktion der Drag & Drop-Vorgang beendet wird. Der Standardhandler für dieses Ereignis bricht den Drag & Drop-Vorgang ab, wenn die ESC-Taste gedrückt wird, und legt die Daten ab, wenn die Maustaste losgelassen wird.
Vorsicht |
---|
Diese Ereignisse werden während des Drag & Drop-Vorgangs kontinuierlich ausgelöst.Ressourcenintensive Aufgaben sollten in den Ereignishandlern daher vermieden werden.Verwenden Sie z. B. einen zwischengespeicherten Cursor, anstatt jedes Mal, wenn das GiveFeedback-Ereignis ausgelöst wird, einen neuen Cursor zu erstellen. |
Einrichten eines Elements als Ablageziel
Ein Objekt, das als Ablageziel fungiert, ist für Folgendes zuständig:
Angeben, dass es ein gültiges Ablageziel ist
Reagieren auf die Quelle des Ziehvorgangs, wenn sie auf dem Ziel abgelegt wird
Überprüfen, ob die übertragenen Daten in einem unterstützten Format vorliegen
Verarbeiten der abgelegten Daten
Um anzugeben, dass ein Element ein Ablageziel ist, legen Sie seine AllowDrop-Eigenschaft auf true fest. Die Ablagezielereignisse werden dann für das Element ausgelöst, sodass Sie sie behandeln können. Während eines Drag & Drop-Vorgangs findet die folgende Sequenz von Ereignissen für das Ablageziel statt:
Das DragEnter-Ereignis tritt auf, wenn die Daten in die Grenzen des Ablageziels gezogen werden. Normalerweise behandeln Sie dieses Ereignis, um eine Vorschau der Auswirkungen des Drag & Drop-Vorgangs bereitzustellen, sofern sich dies für Ihre Anwendung eignet. Legen Sie die DragEventArgs.Effects-Eigenschaft nicht im DragEnter-Ereignis fest. Sie wird im DragOver-Ereignis überschrieben.
Das folgende Beispiel zeigt den DragEnter-Ereignishandler für ein Ellipse-Element. In diesem Code wird eine Vorschau der Auswirkungen des Drag & Drop-Vorgangs bereitgestellt, indem der aktuelle Fill-Pinsel gespeichert wird. Anschließend wird mithilfe der GetDataPresent-Methode überprüft, ob das über die Ellipse gezogene DataObject Zeichenfolgendaten enthält, die in einen Brush konvertiert werden können. Wenn dies der Fall ist, werden die Daten mit der GetData-Methode extrahiert. Anschließend werden sie in einen Brush konvertiert und auf die Ellipse angewendet. Die Änderung wird im DragLeave-Handler rückgängig gemacht. Falls die Daten nicht in einen Brush konvertiert werden können, wird keine Aktion ausgeführt.
Das DragOver-Ereignis tritt kontinuierlich auf, während die Daten über das Ablageziel gezogen werden. Dieses Ereignis wird mit dem GiveFeedback-Ereignis für die Quelle des Ziehvorgangs verknüpft. Im DragOver-Ereignishandler werden in der Regel die GetData- und GetDataPresent-Methoden verwendet, um zu überprüfen, ob die übertragenen Daten in einem Format vorliegen, das vom Ablageziel verarbeitet werden kann. Sie können auch überprüfen, ob Zusatztasten gedrückt werden. Durch Zusatztasten wird normalerweise angegeben, ob der Benutzer einen Verschiebe- oder Kopiervorgang beabsichtigt. Nachdem diese Überprüfungen vorgenommen wurden, legen Sie die DragEventArgs.Effects-Eigenschaft fest, um die Quelle des Ziehvorgangs über die Auswirkungen des Ablegens der Daten zu benachrichtigen. Die Quelle des Ziehvorgangs empfängt diese Informationen in den GiveFeedback-Ereignisargumenten und kann einen entsprechenden Cursor festlegen, um Feedback für den Benutzer bereitzustellen.
Das folgende Beispiel zeigt den DragOver-Ereignishandler für ein Ellipse-Element. Dieser Code überprüft, ob das über die Ellipse gezogene DataObject Zeichenfolgendaten enthält, die in einen Brush konvertiert werden können. Wenn dies der Fall ist, wird die DragEventArgs.Effects-Eigenschaft auf Copy festgelegt. Dadurch wird die Quelle des Ziehvorgangs informiert, dass die Daten in die Ellipse kopiert werden können. Wenn die Daten nicht in einen Brush konvertiert werden können, wird die DragEventArgs.Effects-Eigenschaft auf None festgelegt. Dadurch wird die Quelle des Ziehvorgangs informiert, dass die Ellipse kein gültiges Ablageziel für die Daten ist.
Das DragLeave-Ereignis tritt auf, wenn die Daten aus den Grenzen des Ziels gezogen werden, ohne sie abzulegen. Sie behandeln dieses Ereignis, um alle im DragEnter-Ereignishandler ausgeführten Aktionen rückgängig zu machen.
Das folgende Beispiel zeigt den DragLeave-Ereignishandler für ein Ellipse-Element. Dieser Code macht die im DragEnter-Ereignishandler ausgeführte Vorschau rückgängig, indem der gespeicherte Brush auf die Ellipse angewendet wird.
Das Drop-Ereignis tritt auf, wenn die Daten auf dem Ablageziel abgelegt werden. Standardmäßig geschieht dies, wenn die Maustaste losgelassen wird. Im Drop-Ereignishandler verwenden Sie die GetData-Methode, um die übertragenen Daten aus dem DataObject zu extrahieren und die für die Anwendung erforderliche Datenverarbeitung auszuführen. Das Drop-Ereignis beendet den Drag & Drop-Vorgang.
Das folgende Beispiel zeigt den Drop-Ereignishandler für ein Ellipse-Element. Dieser Code wendet die Auswirkungen des Drag & Drop-Vorgangs an und ähnelt dem Code im DragEnter-Ereignishandler. Es wird überprüft, ob das über die Ellipse gezogene DataObject Zeichenfolgendaten enthält, die in einen Brush konvertiert werden können. Wenn dies der Fall ist, wird der Brush auf die Ellipse angewendet. Falls die Daten nicht in einen Brush konvertiert werden können, wird keine Aktion ausgeführt.
Siehe auch
Referenz
Weitere Ressourcen
Exemplarische Vorgehensweise: Aktivieren der Drag & Drop-Funktion auf einem Benutzersteuerelement
Gewusst-wie-Themen zu Drag & Drop
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
---|---|---|
April 2011 |
Das Thema wurde aktualisiert. |
Kundenfeedback. |