mvvmcross非线性导航
本文关键字:非线性导航 mvvmcross | 更新日期: 2023-09-27 18:12:02
刚开始玩MvvmCross。只是想知道,它能不能处理非线性导航?
MainPage -> SelectStore -> SelectItems -> SelectSlot -> ConfirmOrder -> (!) MainPage
在我以前的项目中,我使用了MvvmLight和NonLinearNaviService(我不太满意它)。
在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);