首页 > 解决方案 > 在 OnNavigatedTo 中调用 FileOpenPicker 仅适用于 PC 上的 Win 10,但不适用于 Win 10 Mobile

问题描述

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

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

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

标签: uwpwin-universal-appwindows-10-universal

解决方案


在 OnNavigatedTo 中调用 FileOpenPicker 仅适用于 PC 上的 Win 10,但不适用于 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
    {

    }

}

推荐阅读