Контракты выбора файлов для приложения Windows Phone 8.1 Silverlight
Не удается узнать, как использовать контракты средства выбора файлов для приложения Windows Phone 8.1 Silverlight. Все документы относятся к приложениям Windows Store 8.1, но ничего не сказано о приложениях Silverlight 8.1 по адресу https://msdn.microsoft.com/.
1 ответ
Это делается так же, как Share Target.
- Объявите в своем средстве открытия / сохранения файла Package.appxmanifest.
- В 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;
}
}
Вы можете создать собственный 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.
Создайте новую страницу для FilePicker и обработайте пользовательский выбор или добавление файлов с помощью FileOpen(Save)PickerUI, который вы взяли из LaunchingEventArgs.
PS Вы не можете изменить ApplicationBar, когда вы вызываете с FilePickerContract.