在mvvmcross中显示非视图/视图模型中的视图

geo*_*eys 14 mvvm windows-phone mvvmcross xamarin windows-store-apps

从非视图中打开mvvmcross中的View的正确方法是什么?在视图模型中,我们将使用ShowViewModel <>(..).

具体来说,我们正在响应推送通知打开应用程序(使用自定义有效负载),该通知指示应加载的视图.

我们有一个简单的解决方法只是为了概念验证,只是想了解正确的MVX方法

Stu*_*art 17

我认为没有"正确的方法" - 我认为这取决于您的应用以及您需要它做什么.

对于某些特定情况 - 例如ViewModel-> ViewModel和AppStart - MvvmCross提供了一些方便的方法:

但总的来说,任何一个类都可以ShowViewModel通过调用来请求:

         var viewDispatcher = Mvx.Resolve<IMvxViewDispatcher>();
         viewDispatcher.ShowViewModel(new MvxViewModelRequest(
                                                    viewModelType,
                                                    parameterBundle,
                                                    presentationBundle,
                                                    requestedBy));
Run Code Online (Sandbox Code Playgroud)

此外,还有一个基类 - MvxNavigatingObject.cs - 它可以帮助解决这个问题(它是MvxViewModel和MvxAppStart的基类) - 因此您可以轻松地提供一个或多个服务,例如INavigateMyselfService谁的实现继承MvxNavigatingObject.

  public interface INavigateMyselfService
  {
      void GoWild(string side);
  }

  public class NavigateMyselfService
     : MvxNavigatingObject
     , INavigateMyselfService
  {
      public void GoWild(string side)
      {
          ShowViewModel<WildViewModel>(new { side = side });
      }
  }
Run Code Online (Sandbox Code Playgroud)