Я использую приложения FilePicker для Windows Universal, и я пытаюсь запустить File Picker из MainPage.xaml, а затем перейти на другую страницу (LoadPhoto.xaml), чтобы отобразить выбранное изображение.Перейдите на другую страницу из метода ContinueFileOpenPicker
Первоначально я реализовал свое приложение, чтобы перейти к LoadPhoto.xaml, а затем, как часть загрузки страницы, я бы назвал File Picker. Однако это вызвало проблемы при возобновлении приложения, поэтому я переместил вызов File Picker из конструктора.
В новейшей реализации я вызываю сборщик файлов из MainPage.xaml, а затем, если выбрана фотография, перейдите к LoadPhoto.xaml. Тем не менее, кажется, что где-то есть условие гонки: иногда приложение остается на MainPage после выбора изображения (похоже, что он фактически переходит на страницу LoadPhoto, но что-то заставляет Frame вернуться к MainPage). В другое время приложение успешно переходит на страницу LoadPhoto и отображает изображение, но если я вернусь назад с помощью кнопки «Назад», а затем снова нажмите кнопку «Выбрать фото», на короткое время отобразится FilePicker, а затем приложение выйдет из строя. Это поведение не воспроизводится с присоединенным VS. Все работает нормально во время выполнения в режиме отладки.
Я думаю, что основной причиной является то, что код ContinueFileOpenPicker
выполняется из рабочего потока, поэтому я не должен вызывать this.Frame.Navigate(typeof(LoadPhoto), file);
из этого потока. Этот вызов должен быть сделан из основного потока, но я не уверен, как это сделать.
К сожалению, это не решает проблему: await CoreWindow.GetForCurrentThread().Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => { this.Frame.Navigate(typeof(LoadPhoto), file); });
Как можно перейти на другую страницу из метода ContinueFileOpenPicker? Полный код с воспроизведением - here.
Большое спасибо @quimbs! Это работало как шарм. :) – irodrisa