Necesito colocar un archivo de imagen en mi aplicación WPF. Actualmente tengo un evento que se activa cuando dejo caer los archivos, pero no sé qué hacer a continuación. ¿Cómo obtengo la imagen? ¿El senderobjeto es la imagen o el control?
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?
}
                
AllowDropse establece en True, peroDropnunca se llama al controlador de eventos. Cuando arrastro un archivo sobre la ventana, veo un símbolo circular "denegado"Gridcomo elemento raíz, con unBorderinterior con laBackgroundpropiedad establecida en algo (el blanco está bien, pero no transparente). Dentro delBorderpongo el contenido real.El archivo de imagen está contenido en el
eparámetro, que es una instancia de laDragEventArgsclase .(El
senderparámetro contiene una referencia al objeto que generó el evento).Específicamente, verifique al
e.Datamiembro ; como explica la documentación, esto devuelve una referencia al objeto de datos (IDataObject) que contiene los datos del evento de arrastre.La
IDataObjectinterfaz proporciona una serie de métodos para recuperar el objeto de datos que busca. Probablemente desee comenzar llamando alGetFormatsmétodo para averiguar el formato de los datos con los que está trabajando. (Por ejemplo, ¿es una imagen real o simplemente la ruta a un archivo de imagen?)Luego, una vez que haya identificado el formato del archivo que se está arrastrando, llamará a una de las sobrecargas específicas del
GetDatamétodo para recuperar el objeto de datos en un formato particular.fuente
Además de la respuesta de AR, tenga en cuenta que si desea usar
TextBoxpara soltar, debe saber lo siguiente.TextBoxparece tener ya un manejo predeterminado paraDragAndDrop. Si su objeto de datos es unString, simplemente funciona. Otros tipos no se manejan y obtienes el efecto de mouse Prohibido y nunca se llama a tu manejador Drop.Parece que puede habilitar su propio manejo
e.Handleden verdadero en unPreviewDragOvercontrolador de eventos.XAML
C#
fuente