1

无法了解如何为 Windows Phone 8.1 Silverlight 应用程序使用文件选择器合同。所有文档都与 Windows Store 8.1 应用程序相关,但在https://msdn.microsoft.com/上没有提及与 Silverlight 8.1 应用程序相关的内容。

4

1 回答 1

2

它的完成方式与Share Target相同。

  1. 在您的 Package.appxmanifest 文件中声明打开/保存选择器。
  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 处理用户选择或添加文件。

PS 当您使用 FilePickerContract 调用时,您无法更改 ApplicationBar。

于 2015-06-18T09:06:51.137 回答