mvvmcross非线性导航

本文关键字:非线性导航 mvvmcross | 更新日期: 2023-09-27 18:12:02

刚开始玩MvvmCross。只是想知道,它能不能处理非线性导航?

MainPage -> SelectStore -> SelectItems -> SelectSlot -> ConfirmOrder -> (!) MainPage

在我以前的项目中,我使用了MvvmLight和NonLinearNaviService(我不太满意它)。

mvvmcross非线性导航

在MvvmCross中相当于NavigationService的是Presenter

您可以轻松地提供您自己的自定义演示器-并且您可以在每个平台上对这些演示器进行编码以提供非线性路径。

对于大多数平台来说,这是直接的-但对于Android来说,它可能有点棘手-主要是因为Android Activity返回堆栈不像Windows Pages和iOS NavigationControllers那样直接操作

你可以导航到任何你想要的ViewModel,通过调用ShowViewModel从MvxViewModel上下文。

您还可以导航到MvxViewModel上下文之外的ViewModel -从您的应用程序的任何部分使用:

Mvx.Resolve<IMvxViewDispatcher>().ShowViewModel(.....).

如果你想从栈中弹出ViewModel,你可以使用:

// Remove current page from BackStack
var entry= Frame.BackStack.Last(entry => entry.SourcePageType == this.GetType());
Frame.BackStack.Remove(entry);
            //Or
Frame.BackStack.RemoveAt(Frame.BackStack.Count - 1);