Windows Phone 8.1 Silverlight 应用程序的文件选取器合同

File picker contracts for Windows Phone 8.1 Silverlight app

无法找到如何为 Windows Phone 8.1 Silverlight 应用程序使用文件选择器合同。所有文档都与 Windows Store 8.1 Apps 相关,但在 https://msdn.microsoft.com/.

没有提及与 Silverlight 8.1 Apps 相关的内容

Share Target的方法相同。

  1. 在您的 Package.appxmanifest 文件 Open/Save 选择器中声明。
  2. 在 PhoneApplicationService.Launching 事件处理程序中检查是否可以将 args 转换为 PhoneFileOpen(Save)PickerLaunchingEventArgs:
private void Application_Launching(object sender, LaunchingEventArgs e)
{
    var fileOpenPickerArgs = (e as PhoneFileOpenPickerLaunchingEventArgs);
    if (fileOpenPickerArgs != null)
    {
        this.FileOpenPickerUI = fileOpenPickerArgs.FileOpenPickerActivatedEventArgs.FileOpenPickerUI;
    }
}
  1. 您可以创建自己的 UriMapper,如果应用程序是使用 FilePickerArgs 启动的,它将导航到 FilePickerPage:

    public class FilePickerUriMapper : UriMapperBase
    {
        public override Uri MapUri(Uri uri)
        {
            if ((Application.Current as App).FileOpenPickerUI != null)
            {
                return new Uri(uri.ToString().Replace("MainPage", "FilePickerPage"), UriKind.Relative);
            }
            return uri;
        }
    }
    

    在 InitializePhoneApplication 方法中将 RootFrame UriMapper 属性 设置为自定义 UriMapper:

    RootFrame.UriMapper = new FilePickerUriMapper();
    

    此外,您可以从“应用程序开始”页面处理导航,在这种情况下您将不需要实现 UriMapper。

  2. 为 FilePicker 创建新页面并使用您从 LaunchingEventArgs 获取的 FileOpen(Save)PickerUI 处理用户选取或添加文件。

P.S 使用 FilePickerContract 调用时,您无法更改 ApplicationBar。