我正在使用适用于 Windows 通用应用程序的 FilePicker,我正在尝试从 MainPage.xaml 启动文件选择器,然后导航到不同的页面 (LoadPhoto.xaml) 以呈现所选图像。
我最初实现了我的应用程序,以便导航到 LoadPhoto.xaml,然后,作为加载页面的一部分,我将调用文件选择器。但是,在恢复应用程序时会导致问题,因此我将 File Picker 调用移出构造函数。
在最新的实现中,我从 MainPage.xaml 调用文件选择器,然后,如果选择了一张照片,则导航到 LoadPhoto.xaml。但是,某处似乎存在竞争条件:有时,应用程序在选择图片后停留在 MainPage 上(看起来它实际上是在导航到 LoadPhoto 页面,但某些东西使 Frame 回到了 MainPage)。其他时候,应用程序成功导航到 LoadPhoto 页面并呈现图像,但如果我使用返回按钮导航回来,然后再次按下 Pick photo 按钮,FilePicker 会短暂显示,然后应用程序崩溃。此行为不会在附加 VS 的情况下重现。在调试模式下执行时一切正常。
我认为根本原因是ContinueFileOpenPicker
代码是从工作线程执行的,所以我不应该this.Frame.Navigate(typeof(LoadPhoto), file);
从那个线程调用。该调用应该从主线程进行,但我不知道该怎么做。
不幸的是,这并不能解决问题:await CoreWindow.GetForCurrentThread().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { this.Frame.Navigate(typeof(LoadPhoto), file); });
如何从 ContinueFileOpenPicker 方法导航到不同的页面?repro 的完整代码在这里。