我正在尝试使用Plugin.File的内置类CrossFilePicker在MvvmCross中浏览文件

时间:2016-09-21 09:35:18

标签: c# xamarin mvvmcross

using MvvmCross.Core.ViewModels;
using StoreChecker.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Plugin.FilePicker;
using MvvmCross.Platform;
using MvvmCross.Plugins.File;
namespace StoreChecker.ViewModels
{

   public class AddNewBrandViewModel:MvxViewModel
    {
  private  void BrowseFiles()
        {
 CrossFilePicker.Current.PickFile();
}
}
单击浏览文件按钮后,我将进入我的设备的文件管理器。如果我没有从存储中选择任何文件并按下我的设备的后退按钮它将再次进入我的应用程序,如果我点击我的浏览文件按钮然后它将无法打开文件浏览器。然后我得到异常System.Invalid.Operation例外。我认为浏览文件不是异步方法所以它仍在进行中

1 个答案:

答案 0 :(得分:1)

PickFile()是一个等待的任务。如果没有选择文件,它将启动异步操作,该操作返回Plugin.FilePicker.Abstractions.FileDatanull的实例。

您应该等待任务:

using MvvmCross.Core.ViewModels;
using StoreChecker.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Plugin.FilePicker;
using MvvmCross.Platform;
using MvvmCross.Plugins.File;
namespace StoreChecker.ViewModels
{

    public class AddNewBrandViewModel : MvxViewModel
    {
        private async Task BrowseFiles()
        {
            var fileData = await CrossFilePicker.Current.PickFile();
            // Do something with your file data
        }
}