0

我有一个管理文档的 WinRT Metro 应用程序(XAML/C#,Windows Release Preview)。文档在内存中表示并通过 Web 服务获取,但并未物理存储在磁盘上。

为了改进我的应用程序,我想实现 FileSavePicker 合同。因此,其他应用程序可以将他们的文档直接保存到我的应用程序中。但似乎无法将内存中的文件保存选择器中的内容获取到我的应用程序中。我已将事件处理程序附加到FileSavePickerActivatedEventArgs.FileSavePickerUI.TargetFileRequested当用户想要将文件保存到我的应用程序时触发的事件。但是在这里我必须设置TargetFileRequestedEventArgs.Request.TargetFile为 aStorageFile并且由于我在内存中并且还没有文件,因此此操作失败。

此外(即使我有一个 StorageFile)我必须对文件保存过程的完成做出反应,而且似乎没有我可以采取的方法/事件来处理这个问题。

我不明白为什么微软决定为文件保存选择器合同采用这种 API 方式。为什么我不能将保存的数据/文件作为参数/流获取并做我想做的事?在这种情况下,沙盒/安全性不是原因!

编辑:我已经看到并查看了 SDK 中的文件选择器合同示例应用程序,但它没有帮助,因为它只保存到物理 StorageFile。

4

2 回答 2

0

你看过CachedFileUpdater 合约吗?当源应用程序写入文件时,您可以使用它来接收通知。您仍然需要为此创建一个 StorageFile。

于 2012-07-25T15:37:38.120 回答
0

您需要使用StorageFile.CreateStreamedFileAsync。此方法将在向您请求数据时向您返回一个由您即时构建的 StorageFile。当从“文件”请求数据时,将调用您传入第二个参数的委托。发生这种情况时,您可以从任何您想要的流中抽取数据。

于 2012-07-26T00:17:12.060 回答