私のWPFアプリケーションで、ブラウザーから画像をドラッグしてWPFアプリケーションのウィンドウにドラッグする機能を実装しようとしています。ブラウザーからWPFアプリケーションへのドラッグアンドドロップイメージ
コードはFirefoxとWindowsエクスプローラでうまく動作しますが、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
}
}
}
IEは行いませんがクロームだけで、画像のHTMLをつかんれるのに対し、Firefoxが実際に画像をクリップボードに保存しているようですそれに何か。
誰かがブラウザ間の機能をどのように利用できるかについての洞察はありますか?
更新: 私が見つけた回避策のカップルは、WebClientのオブジェクトのようなものを使用してソースからダウンロードした後、イメージソース用のHTML(クローム/ Firefoxの)を解析しています。 ただし、ファイルタイプのチェックがより強くなる方法が好まれます。
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
クロム(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は2回):
UntrustedDragDrop
msSourceUrl
FileGroupDescriptor
FileGroupDescriptorW
FileContents
UniformResourceLocator
Effects: Link