如果过早调用 ShowViewModel 将不起作用

ShowViewModel does not work if called too early

MvvmCross 4.1.4 for Window Universal App (UWP) 平台中,如果我们在 ViewModel 中调用 ShowViewModel 过早(如 ConstructorInit,或 Start 事件)然后它不会导航到另一个模型。

public class FirstViewModel : MvxViewModel
{
  public FirstViewModel()
  {
     ShowViewModel<SecondViewModel>();
  }
}

请注意,它适用于 iOSAndroid 平台。

这是 MvvmCross 的一个错误(根据这个 https://github.com/MvvmCross/MvvmCross/issues/1223)。

解决方案是从视图中的某些事件(例如 View_LoadedView_GotFocus 触发导航:

  public sealed partial class FirstView : MvxWindowsPage
  {
            public FirstView()
            {            
                this.InitializeComponent();
                this.Loaded += FirstView_Loaded;
            }

            private void FirstView_Loaded(object sender, RoutedEventArgs e)
            {   
                var viewModel = base.ViewModel as FirstViewModel
                if (viewModel != null)
                {
                    viewModel.Initialise();
                }
            }
 }

ViewModel 更新:

public class FirstViewModel : MvxViewModel
{
  public FirstViewModel()
  {
  }

  public void Initialise()
  {
     //Navigate here
     ShowViewModel<SecondViewModel>();
  }
}