Я пытаюсь реализовать функциональность в своем приложении WPF, чтобы перетащить изображение из браузера и в окно в моем приложении WPF.Перетаскивание изображения из браузера в приложение WPF
Код прекрасно работает с Firefox и Windows Explorer, но проблемы возникают с Chrome и IE (пока еще не пробовали какие-либо другие браузеры).
Вот фрагмент кода:
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
}
}
}
Глядя на выходе, кажется, что Firefox фактически сохраняет изображение в буфер обмена, в то время как Chrome только захватывая HTML изображения, в то время как IE не делает ничего с этим.
У кого-нибудь есть представление о том, как я могу получить кросс-браузерную функциональность?
Update: Пар обходного я нашел это для разбора HTML (Chrome/Firefox) для исходного изображения, а затем загрузить из источника, используя что-то вроде объекта WebClient. Предпочитает, однако, что метод имеет более сильную проверку типа файла.
IE9 и Firefox имеют формат файла DeviceIndependentBitmap, который доступен при перетаскивании изображения без гиперссылки. Кажется, это более безопасная альтернатива, хотя Chrome, похоже, не поддерживает ее. Это также не так полезно для гиперссылок.
С Firefox, выход (Drag_Enter по некоторым причинам увольняют дважды):
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 также увольняют дважды):
DragContext
DragImageBits
FileGroupDescriptorW
FileContents
HTML Format
text/html
text/x-moz-url
UniformResourceLocatorW
UniformResourceLocator
Text
UnicodeText
System.String
Effects: Copy, Move, Link
Internet Explorer (опять , drag_enter дважды выстрелил):
UntrustedDragDrop
msSourceUrl
FileGroupDescriptor
FileGroupDescriptorW
FileContents
UniformResourceLocator
Effects: Link