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 sender
objeto 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?
}
AllowDrop
se establece en True, peroDrop
nunca se llama al controlador de eventos. Cuando arrastro un archivo sobre la ventana, veo un símbolo circular "denegado"Grid
como elemento raíz, con unBorder
interior con laBackground
propiedad establecida en algo (el blanco está bien, pero no transparente). Dentro delBorder
pongo el contenido real.El archivo de imagen está contenido en el
e
parámetro, que es una instancia de laDragEventArgs
clase .(El
sender
parámetro contiene una referencia al objeto que generó el evento).Específicamente, verifique al
e.Data
miembro ; como explica la documentación, esto devuelve una referencia al objeto de datos (IDataObject
) que contiene los datos del evento de arrastre.La
IDataObject
interfaz proporciona una serie de métodos para recuperar el objeto de datos que busca. Probablemente desee comenzar llamando alGetFormats
mé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
GetData
mé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
TextBox
para soltar, debe saber lo siguiente.TextBox
parece 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.Handled
en verdadero en unPreviewDragOver
controlador de eventos.XAML
C#
fuente