快速入门:与文件选取器合约集成(Windows 运行时应用)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

使用文件选取器通过将你的应用与“文件打开选取器”合约、“文件保存选取器”合约或“缓存文件更新程序”合约集成提供对应用内容、保存位置或文件更新的访问。

先决条件

确定应用将通过文件选取器窗口提供哪些服务

可以通过与关联的应用合约集成,向其他应用提供以下服务。若要参与某个合约,则必须在你的应用清单中声明该合约,对相应的已激活事件做出响应,然后创建特殊的应用视图。

提供对文件的访问

如果应用有一个对文件的唯一的和/或有价值的视图,或者如果用户无法以另一种方式轻松访问这些文件,请确保可以从文件选取器访问文件。

应用合约:文件打开选取器合约

已激活事件信息:fileOpenPickerActivatedEventArgs

提供保存位置

如果预期用户需要保存文件,以便以后在应用中打开和处理这些文件,请通过文件选取器提供保存位置。

应用合约:文件保存选取器合约

已激活事件信息:fileSavePickerActivatedEventArgs

提供对文件的实时更新

如果预期用户会将你的应用用作文件的中央存储库(你的应用提供对该存储库的访问),或者文件是通过将你的应用作为保存位置进行保存的,请通过文件选取器跟踪和更新文件。

应用合约:缓存文件更新程序合约

已激活事件信息:cachedFileUpdaterActivatedEventArgs

使用文件选取器访问文件中了解关于应用通过文件选取器可以提供的服务的更多信息。

在应用清单中声明合约。

在 Microsoft Visual Studio 中打开你的项目,按照以下步骤将应用合约添加到清单中:

  1. 通过为你的项目弹出“添加新项目”窗口,从中心窗格选择合约,然后单击“添加”****按钮,来添加应用合约。

    可以通过以下方法在 Visual Studio 中显示“添加新项目”窗口:

    • 通过选择“项目”>“添加新项目...”菜单选项****
    • 通过从项目的上下文菜单中选择“添加”>“新项目...”菜单选项****
    • 通过使用 Crtl+Shift+A 键盘快捷键

    提示  当添加这些合约时,Visual Studio 会自动更新 "package.appmanifest" 清单文件,并会将文件添加到你的项目中,当调用你的应用的服务时,将使用这些文件来定义文件选取器窗口中将承载的视图的布局和行为。

     

  2. 如果默认设置不适用于你的应用,可在 Visual Studio 中自定义合约设置。

    1. 打开 "package.appmanifest"。

    2. 打开“声明”选项卡。

    3. 从“支持的声明”****列表中,选择你的合约名称。

    4. 添加对特定文件类型的支持。

      在“支持的文件类型”框中,取消选中“支持所有文件类型”****复选框。

      使用以下步骤,为要支持的每种文件类型添加新的 FileType 字段:

      1. 单击 “新增”按钮。
      2. 将要支持的文件类型的扩展名输入到 FileType 字段中,如下所示:*.ext

      提示  仅添加直接与你的应用、你的用户和合约相关的那些文件类型。以这种方式限制文件类型可以帮助文件选取器视图保持整洁且易于使用。

       

    还可以通过遵循上述步骤然后单击要删除的类型的“删除”按钮,删除对某个文件类型的支持。“删除”****按钮位于 FileType 字段正上方。

使用添加的合约的标记更新清单文件。将代表添加的合约的元素作为 Extensions 元素的子元素插入到清单 XML 标记中。例如,支持所有文件类型的“文件打开选取器”合约的标记如下所示:


  <Extension Category="windows.filePicker" StartPage="filePicker.html">
    <FileOpenPicker>
      <SupportedFileTypes SupportsAnyFileType="true" />
    </FileOpenPicker>
  </Extension>

从文件选取器激活你的应用时做出响应

将代码添加到已激活事件处理程序,该处理程序测试传递到你的处理程序中的对象(该对象与你在清单中声明的合约相关联),然后显示应用的文件选取器窗口。

每个合约与提供有关已激活事件的信息的某个对象相关联,该事件是在从文件选取器调用你的应用提供的其中一种服务时触发的。

“文件打开选取器”合约 - fileOpenPickerActivatedEventArgs

“文件保存选取器”合约 - fileSavePickerActivatedEventArgs

“缓存文件更新程序”合约 - cachedFileUpdaterActivatedEventArgs

创建将在文件选取器中承载的应用的特殊视图

文件选取器指南和清单中的指南应该会帮助你设计将在文件选取器中托管的应用视图。

最终,你的视图应该包含:

  • 正确自定义文件选取器上下黑边的代码

  • 定义文件选取器的框架区域(在其中显示文件)布局的标记和样式

  • 将数据源绑定到标记以便在框架区域中显示文件的代码

从通过另一个应用调用的文件选取器测试由你的应用提供的服务

若要从文件选取器测试你的应用提供的服务,则必须触发与你的应用提供的服务相对应的已激活事件。无法通过直接运行你的应用触发此事件。

而要使用以下步骤为每个合约触发相应的已激活事件。

若要测试你的应用对“文件打开选取器”合约的参与,请执行以下操作:

  1. 启动除你的应用以外的另一个应用。

  2. 使用这另一个应用的 UI 来调用文件选取器窗口以访问文件。

  3. 从文件选取器中的位置列表中选择你的应用,以查看你的应用在文件选取器中的承载情况。

若要测试你的应用对“文件保存选取器”合约的参与,请执行以下操作:

  1. 启动除你的应用以外的另一个应用。

  2. 使用这另一个应用的 UI 来调用文件选取器窗口以保存文件。

  3. 从文件选取器中的位置列表中选择你的应用,以查看你的应用在文件选取器中的承载情况。

若要测试你的应用对“缓存文件更新程序”合约的参与,请执行以下操作:

  1. 启动除你的应用以外的另一个应用。

  2. 使用这另一个应用的 UI 来调用文件选取器窗口以访问或保存已标记为已更新的文件。

摘要

你的应用可以通过参某个应用合约,向其他应用提供服务。若要参与某个合约,则必须在你的应用清单中声明该合约,对相应的已激活事件做出响应,然后创建特殊的应用视图。

相关主题

访问数据和文件

与文件选取器合约集成

文件选取器合约示例

文件选取器合约指南和清单

如何激活应用

Windows 应用程序合约

参考

Windows.Storage.Pickers.Provider namespace

Windows.ApplicationModel.Activation.fileOpenPickerActivatedEventArgs class

Windows.ApplicationModel.Activation.fileSavePickerActivatedEventArgs class

Windows.ApplicationModel.Activation.cachedFileUpdaterActivatedEventArgs class

使用文件选取器

快速入门:利用文件选取器访问文件

如何通过文件选取器保存文件

文件选取器指南和清单