Search code examples
androidxamarinmvvmcross

MvxBundle is empty during Navigation to the new ViewModel


I'm migrated app from MvvmCross 5.x to MvvmCross 6.1.2 and now I have problem with ntransferring bundle during navigation.

IMvxNavigationService is initialised and passed to VM thru constructor.

Now I try to pass a MvxBundle to the MainViewModel with next call

NavigationService.Navigate<MainViewModel>(new MvxBundle(new Dictionary<string, string>()
{
    {"key1","value1" },
    {"key2","value2" },
}));

In the MainViewModel I override InitFromBundle

protected override void InitFromBundle(IMvxBundle parameters)
{
    base.InitFromBundle(parameters);
}

But parameters is empty. parameters.Data doesn't contains my Dictionary.

Am I doing something wrong?


Solution

  • For navigation use

    NavigationService.Navigate<ViewModel, Parameter type>(parapeter)
    

    Parameter can be any reference type. For example

    await NavigationService.Navigate<MainViewModel, Dictionary<String, String>>(new Dictionary<String, String> {{"", ""}});
    

    ViewModel on which you are navigating must inherit MvxViewModel<MyObject> and override Prepare method

    public class MainViewModel
    {
        public override void Prepare(Dictionary<String, String> parameter)
        {
    
        }
    }