如何将不可见的ViewModel添加到MvvmCross中的导航堆栈

时间:2012-04-20 12:11:40

标签: c# xamarin.ios xamarin.android mvvmcross

我有以下应用情况。 在启动时,我想转到“列表”ViewModel作为启动视图模型/视图。 但我希望用户能够选择BACK来转到“菜单”ViewModel。 如何在MvvmCross中完成?

1 个答案:

答案 0 :(得分:5)

如果你想支持WP7,那么导航将难以通过市场提交过程 - 回流在wp7上是神圣的。

对于Android或iPhone用户而言,这种流程也没有那么大的意义......所以你可能会更好地考虑替代的UX流程 - 你仍然可以拥有流ListView-> Menu-> ...但是你可以避免用户理解为BACK的“BACK”语法。


我认为我将这种用户体验实现为:

启动时,正常导航到ListView / ListViewModel。

以某种方式 - 菜单,按钮或超链接 - 让用户导航到HomeView / HomeViewModel - 但尝试使用“家”或“菜单”比喻而不是“后退” - “返回意味着回来“特别是在WP7上。

在导航到Home中,在导航中设置“ClearTop”的标志 - 例如:

public IMvxCommand GoHomeCommand
{
    get
    {
        return new MvxRelayCommand(RequestNavigate<HomeViewModel>(true));
    }
}

iOS和WP7将解释此“ClearTop”标志,以便在您到达Home后清除导航后退堆栈。然而,遗憾的是它目前在Android中并不完美 - 因此您需要在Android UI项目中做一些聪明的事情 - 例如也许某种程度上找到一种方法来使用“NoHistory”标志进行特殊的开始ListView / Activity。


有兴趣听听是否有其他方法可以做到这一点。