通过FileSavePicker提供具有相同扩展名的多个fileTypes

时间:2014-03-03 14:05:19

标签: c# file windows-runtime windows-store-apps filesavepicker

在我的WinRT / Windows应用商店应用中,我想允许用户通过FileSavePicker将文件保存为纯文本或降价文本。

savePicker.FileTypeChoices.Add("Markdown Text", new List<string>() { ".txt" });
savePicker.FileTypeChoices.Add("Plain Text", new List<string>() { ".txt" });

但是,FileSavePicker返回的对象是StorageFile,它只知道扩展名为.txt

如何让用户在具有相同文件扩展名的一堆选项中进行选择?有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

我认为你不能这样做。正如link所说的那样。 也许您可以在设置窗格中添加一个选项,以使用默认类型。我的意思是: 您添加的默认类型是纯文本。但是用户可以转到设置并更改此内容。

通过这种方式,您可以向用户添加选项,但不要用其他文件保存控件来填充gui

答案 1 :(得分:0)

不直接支持此功能,因为系统仅将每个文件扩展名识别为单一类型。你确实有几个选择。

  • 为每种文件类型创建不同的文件类型
  • 为每种文件类型创建不同的文件类型,然后在选择文件后将其重命名为.txt

例如:

savePicker.FileTypeChoices.Add("Markdown Text", new List<string>() { ".mtxt" });
savePicker.FileTypeChoices.Add("Plain Text", new List<string>() { ".ptxt" });

var file = await savePicker.PickSaveFileAsync();
await file.RenameAsync(file.DisplayName + ".txt");

如果他们已经有一个具有该名称的文件,则存在不会警告他们的危险,因此不一定建议。

  • 在用于保存提供选项的文件的按钮旁边有一个复选框/下拉列表。

其中,第一个或第三个是最理想的。如果它们之间存在差异,最好在文件系统中区分它。如果仍然不需要,那么在他们选择保存之前为他们提供选项是最好的选择。

编辑:@Krekkon的想法也很好。将选项添加到设置弹出窗口是个好主意。您需要告知他们该选项存在。另一种选择是使用类似MessageDialog的内容,弹出三个按钮:Save as Plain TextSave as MarkupCancel。遗憾的是,这会在流程中添加一个点击,因此可能并不理想。我个人认为在保存按钮旁边添加一个简单的控件很简单。