Ich muss eine Bilddatei in meiner WPF-Anwendung ablegen. Ich habe derzeit ein Ereignis ausgelöst, wenn ich die Dateien ablege, aber ich weiß nicht, wie ich als nächstes vorgehen soll. Wie bekomme ich das Bild? Ist das sender
Objekt das Bild oder das Steuerelement?
private void ImagePanel_Drop(object sender, DragEventArgs e)
{
//what next, dont know how to get the image object, can I get the file path here?
}
AllowDrop
ist auf True gesetzt, aber derDrop
Ereignishandler wird nie aufgerufen. Wenn ich eine Datei über das FensterGrid
als Root-Element verwendet, mit einemBorder
Inside, dessenBackground
Eigenschaft auf etwas festgelegt ist (Weiß ist in Ordnung, aber nicht transparent). In dieBorder
stelle ich den eigentlichen Inhalt.Die Bilddatei ist im
e
Parameter enthalten, der eine Instanz derDragEventArgs
Klasse ist .(Der
sender
Parameter enthält einen Verweis auf das Objekt, das das Ereignis ausgelöst hat.)Überprüfen Sie insbesondere das
e.Data
Mitglied . Wie in der Dokumentation erläutert, wird hiermit ein Verweis auf das Datenobjekt (IDataObject
) zurückgegeben, das die Daten aus dem Drag-Ereignis enthält.Die
IDataObject
Schnittstelle bietet eine Reihe von Methoden zum Abrufen des Datenobjekts, nach dem Sie suchen. Sie möchten wahrscheinlich zunächst die Methode aufrufenGetFormats
, um das Format der Daten herauszufinden, mit denen Sie arbeiten. (Ist es zum Beispiel ein tatsächliches Bild oder einfach der Pfad zu einer Bilddatei?)Sobald Sie das Format der Datei identifiziert haben, die hineingezogen wird, rufen Sie eine der spezifischen Überladungen der
GetData
Methode auf, um das Datenobjekt tatsächlich in einem bestimmten Format abzurufen.quelle
Um AR zu beantworten, beachten Sie bitte, dass Sie
TextBox
Folgendes wissen müssen , wenn Sie Drop verwenden möchten .TextBox
scheint bereits eine Standardbehandlung für zu habenDragAndDrop
. Wenn Ihr Datenobjekt ein istString
, funktioniert es einfach. Andere Typen werden nicht behandelt und Sie erhalten den Effekt "Verbotene Maus" und Ihr Drop-Handler wird nie aufgerufen.Es scheint , wie Sie Ihren eigenen Umgang mit ermöglichen können ,
e.Handled
um wahr in einemPreviewDragOver
Event - Handler.XAML
C #
quelle