在 OnNavigatedTo 中调用 FileOpenPicker 仅适用于 PC 上的 Win 10,但不适用于 Win 10 Mobile

Calling FileOpenPicker in OnNavigatedTo works only on Win 10 on PC but not on Win 10 Mobile

在 UWP 应用程序中,我想在导航到页面时提示用户选择文件。

我正在覆盖页面中的方法 OnNavigatedTo 并从中调用选取器。它在 PC 上运行没有问题。但是当我 运行 在装有 Windows 10 Mobile (Lumia 640) 的移动设备上时,它不起作用!

只是为了测试,如果我调用 CameraCaptureUI 而不是 FileOpenPicker,它在 PC 和移动设备上都没有问题!

Calling FileOpenPicker in OnNavigatedTo works only on Win 10 on PC but not on Win 10 Mobile

问题是移动设备是低性能设备。在导航方法之后立即调用选择器将导致设备变得无响应。所以你可以在调用 piker 之前添加任务延迟,如下所示

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    await Task.Delay(100);

    FileOpenPicker openPicker = new FileOpenPicker();
    openPicker.ViewMode = PickerViewMode.Thumbnail;
    openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
    openPicker.FileTypeFilter.Add(".jpg");
    StorageFile file = await openPicker.PickSingleFileAsync();
    if (file != null)
    {

    }
    else
    {

    }

}