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

在mvvmcross中显示非视图/视图模型中的视图,mvvm,windows-phone,windows-store-apps,xamarin,mvvmcross,Mvvm,Windows Phone,Windows Store Apps,Xamarin,Mvvmcross,在mvvmcross中从非视图打开视图的正确方法是什么?在viewmodel中,我们将使用ShowViewModel(..) 具体来说,我们是在响应打开应用程序的推送通知(使用自定义负载),该通知指示应加载的视图 我们有一个黑客解决方案,只是为了证明概念,只是想了解正确的MVX方法,我认为没有“正确的方法”——我认为这取决于你的应用程序和你需要它做什么 对于某些特定情况-例如ViewModel->ViewModel和AppStart-MvvmCross提供了一些方便的方法: 您可以在MvxVi

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

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


我们有一个黑客解决方案,只是为了证明概念,只是想了解正确的MVX方法,我认为没有“正确的方法”——我认为这取决于你的应用程序和你需要它做什么

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

  • 您可以在
    MvxViewModel
  • 可以覆盖应用程序启动以使用提示对象-请参阅
但总的来说,任何类都可以通过调用以下命令请求
ShowViewModel

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

检查上面的链接,你会得到的想法

在我的情况下,我想从辅助磁贴启动应用程序。为此,我必须为辅助磁贴启动特定页面

我的初始应用程序启动视图模型是LoginViewModel,自定义应用程序启动视图模型是HomeViewModel

我从App.cs(Core)到MyCustomAppStart类控制了这一点


请参阅上面的链接

Ah IMvxViewDispatcher正是我要找的!INavigateMyselfService与我所做的类似,只是我的实现是。。不pretty@Stuart感谢您所做的所有工作,尤其是在Xamarin社区!这太完美了。我用它来处理我应用程序中未经授权的异常。如果我发现这样一个异常,我现在可以使用它来轻松导航到登录屏幕。@Stuart在导航到SplashScreenViewModel的场景中,在导航到MainViewModel的间隔后,我们看到在视图模型之间导航的随机失败。两者都使用ShowViewModel();应用程序编程接口。我们以“mvx:Diagnostic:70.22显示ViewModel MainViewModel”的日志结束,但应用程序仍保留在SplashScreenViewModel上。这里有关于如何调试它的提示吗?Thnx!
  public interface INavigateMyselfService
  {
      void GoWild(string side);
  }

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