0

ドキュメントを管理する WinRT Metro アプリ (XAML/C#、Windows リリース プレビュー) があります。ドキュメントはメモリ内で表現され、Web サービスを介して取得されますが、物理的にディスクに保存されることはありません。

アプリを改善するために、FileSavePicker コントラクトを実装したいと考えました。したがって、他のアプリはドキュメントを私のアプリに直接保存できます。しかし、メモリ内のファイル保存ピッカーからアプリにコンテンツを取得することはできないようです。FileSavePickerActivatedEventArgs.FileSavePickerUI.TargetFileRequestedユーザーがファイルをアプリに保存したいときに発生するイベントに、イベント ハンドラーをアタッチしました。しかし、ここでは and に設定TargetFileRequestedEventArgs.Request.TargetFileする必要がStorageFileあり、メモリ内にあり、まだファイルを持っていないため、このアクションは失敗します。

さらに (たとえ StorageFile があったとしても) ファイル保存プロセスの完了に対応する必要があり、これを処理するために使用できるメソッド/イベントがないようです。

Microsoft がファイル セーブ ピッカー コントラクトにこの API を使用することにした理由がわかりません。保存されたデータ/ファイルをパラメーター/ストリームとして取得できず、やりたいことができないのはなぜですか? この場合、サンドボックス化/セキュリティが理由になることはありません!

編集:SDK のファイル ピッカー コントラクト サンプル アプリを見て確認しましたが、物理的な StorageFile にしか保存されないため、役に立ちません。

4

2 に答える 2

0

StorageFile.CreateStreamedFileAsyncを使用する必要があります。このメソッドは、データが要求されたときにオンザフライで構築された StorageFile を返します。2 番目の引数で渡すデリゲートは、「ファイル」からデータが要求されたときに呼び出されます。これが発生すると、任意のストリームからデータを送り込むことができます。

于 2012-07-26T00:17:12.060 に答える
0

CachedFileUpdater コントラクトを見ましたか? これを使用して、ソース アプリがファイルに書き込みを行ったときに通知を受け取ることができます。このためにも StorageFile を作成する必要があります。

于 2012-07-25T15:37:38.120 に答える