Q:

Pass parameter via ICommand

The following works if I do not pass anything from the View. 
View.cs 
ViewModel. ReloadCommand. Execute(null);

ViewModel.cs
public ICommand ReloadCommand
{
  get
   {
      return new MvxCommand(async () =>
         {
            await RefreshStudentList();
         });
    }
}

However I need to pass a parameter, I wonder how could I do that? 
ViewModel. ReloadCommand. Execute(xxx);

ViewModel.cs
public ICommand ReloadCommand
{
  get
   {
      return new MvxCommand(async () =>
         {
            await RefreshStudentList(xxx);
         });
    }
}

A:

I'm not familiar with MvvmCross, but from what I can tell, it would be something like this:
public ICommand ReloadCommand
{
    get
    {
        return new MvxCommand<XXXType>(async (xxx) =>
            {
                await RefreshRoutesList(xxx);
            });
    }
}

A:

To do async operation MvvmCross also has a MvxAsyncCommand which also can take a parameter as the regular MvxCommand. 
It looks something like this:
public ICommand ReloadCommand
{
    return new MvxAsyncCommand(DoAsyncStuff);
}

private Task DoAsyncStuff(MyType type)
{

}

Any command can be executed with a parameter like:
ViewModel. ReloadCommand. Execute(myParameter);

