Контракты выбора файлов для приложения Windows Phone 8.1 Silverlight

Не удается узнать, как использовать контракты средства выбора файлов для приложения Windows Phone 8.1 Silverlight. Все документы относятся к приложениям Windows Store 8.1, но ничего не сказано о приложениях Silverlight 8.1 по адресу https://msdn.microsoft.com/.

1 ответ

Решение

Это делается так же, как Share Target.

  1. Объявите в своем средстве открытия / сохранения файла Package.appxmanifest.
  2. В PhoneApplicationService.Launching обработчик событий проверяет, можно ли привести аргументы в PhoneFileOpen (Сохранить) PickerLaunchingEventArgs:
private void Application_Launching(object sender, LaunchingEventArgs e)
{
    var fileOpenPickerArgs = (e as PhoneFileOpenPickerLaunchingEventArgs);
    if (fileOpenPickerArgs != null)
    {
        this.FileOpenPickerUI = fileOpenPickerArgs.FileOpenPickerActivatedEventArgs.FileOpenPickerUI;
    }
}
  1. Вы можете создать собственный UriMapper, который будет переходить к FilePickerPage в случае, если приложение было запущено с FilePickerArgs:

    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;
        }
    }
    

    Задайте для свойства RootFrame UriMapper пользовательский UriMapper в методе InitializePhoneApplication:

    RootFrame.UriMapper = new FilePickerUriMapper();
    

    Также вы можете управлять навигацией со стартовой страницы приложения, в этом случае вам не нужно будет реализовывать UriMapper.

  2. Создайте новую страницу для FilePicker и обработайте пользовательский выбор или добавление файлов с помощью FileOpen(Save)PickerUI, который вы взяли из LaunchingEventArgs.

PS Вы не можете изменить ApplicationBar, когда вы вызываете с FilePickerContract.

Другие вопросы по тегам