Estoy tratando de implementar la funcionalidad en mi aplicación WPF para arrastrar una imagen desde un navegador a una ventana en mi aplicación WPF.Imagen de arrastrar y soltar del navegador a la aplicación WPF
El código funciona bien con Firefox y Windows Explorer, pero surgen problemas con Chrome e IE (aún no lo he probado con otros navegadores).
He aquí un fragmento de código:
private void Drag_Enter(object sender, DragEventArgs e)
{
foreach (string format in e.Data.GetFormats())
Console.WriteLine(format);
Console.WriteLine("Effects:" + e.AllowedEffects);
}
private void Drag_Drop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
ImageSourceConverter converter = new ImageSourceConverter();
foreach (string file in files)
{
if (converter.IsValid(file))
{
// Do something with the image
}
}
}
En cuanto a la salida, parece que Firefox realidad guarda la imagen en el portapapeles, mientras que Chrome es sólo sacar el html de la imagen, mientras que IE no hace cualquier cosa con eso.
¿Alguien tiene alguna idea de cómo puedo obtener la funcionalidad de navegador cruzado?
actualización: Un par de soluciones que he encontrado son para analizar el html (Chrome/Firefox) para una fuente de imagen, a continuación, descarga de la fuente usando algo como el objeto cliente Web. Preferiría un método, sin embargo, que tenga una comprobación más sólida para el tipo de archivo.
IE9 y Firefox tienen un formato de archivo DeviceIndependentBitmap que está disponible al arrastrar una imagen que no es de hipervínculo. Esta parece ser una alternativa más segura, aunque Chrome no parece ser compatible. Tampoco es tan útil con imágenes de hipervínculos.
Con Firefox, la salida es (Drag_Enter por alguna razón es despedido dos veces):
text/x-moz-url
FileGroupDescriptor
FileGroupDescriptorW
FileContents
UniformResourceLocator
UniformResourceLocatorW
text/x-moz-url-data
text/x-moz-url-desc
text/uri-list
text/_moz_htmlcontext
text/_moz_htmlinfo
text/html
HTML Format
Text
UnicodeText
System.String
application/x-moz-nativeimage
DeviceIndependentBitmap
FileDrop
FileNameW
FileName
Preferred DropEffect
application/x-moz-file-promise-url
application/x-moz-file-promise-dest-filename
DragImageBits
DragContext
Effects: Link, All
Chrome (drag_enter también es despedido dos veces):
DragContext
DragImageBits
FileGroupDescriptorW
FileContents
HTML Format
text/html
text/x-moz-url
UniformResourceLocatorW
UniformResourceLocator
Text
UnicodeText
System.String
Effects: Copy, Move, Link
Internet Explorer (de nuevo , drag_enter dispara dos veces):
UntrustedDragDrop
msSourceUrl
FileGroupDescriptor
FileGroupDescriptorW
FileContents
UniformResourceLocator
Effects: Link