いくつかの画像を表示する XBAP アプリがあり、ユーザーはそれらの一部をディスクに保存したいと考えています。しかし、私の XBAP アプリは部分信頼モードで実行されるためSaveFileDialog
、ファイル システムにアクセスできないことは言うまでもなく、開始できません。
この場合、スタック オーバーフローが推奨する画像をディスクに保存する方法は何でしょうか?
いくつかの画像を表示する XBAP アプリがあり、ユーザーはそれらの一部をディスクに保存したいと考えています。しかし、私の XBAP アプリは部分信頼モードで実行されるためSaveFileDialog
、ファイル システムにアクセスできないことは言うまでもなく、開始できません。
この場合、スタック オーバーフローが推奨する画像をディスクに保存する方法は何でしょうか?
問題の解決策を見つけたので、この回答をコミュニティ wiki として掲載します。
予想通り、SaveFileDialog
部分信頼のセキュリティ制限により、ファイル システムにアクセスしたり、画像を表示したり、クリップボードに保存したりできませんでした。
そのため、XBAP アプリケーションが展開されているサイトに.ashx ハンドラーを作成しました。このハンドラーは、URL 文字列で特定の画像 ID を受け取り、DB から画像を照会しcontext.WriteBinary
、適切なコンテンツの下に画像 ( )を返します。ヘッダー「画像/jpeg」。
XBAP では、コントロールの代わりにImage
、WebBrowser
適切な URI を指定してコントロールを配置しました ( Source プロパティをバインドするためのトリックが必要になる場合があります)。XBAP アプリのオリジン サイトを指す URI のみを指定できます。絶対パスにすることも、次のような特別な構文を使用することもできますpack://siteoforigin:,,
ほら、今、画像は「保存...」、「背景として設定」、およびその他すべての便利な要素を備えた標準のブラウザコンテキストメニューをサポートしています:-)