如何关闭 MvvmCross MasterDetail 页面?

How do I close an MvvmCross MasterDetail page?

我希望我的应用显示一个登录页面,然后是一个带有 'hamburger' 菜单的 MasterDetail 页面。在汉堡菜单上,我想要一个注销条目来关闭主详细信息并再次显示登录页面。除了注销部分,我都在工作。

我从 MvvmCross Playgrounds 示例中复制了代码,特别是 MixedNavFirstPage(伪造登录过程)、MixedNavMasterDetailPage('hamburger menu')和 MixedNavMasterRootContentPage。

如果我尝试使用 await _navigationService.Close(this) 关闭 MixedNavMasterDetailPage,那么我会在 MvxFormsPagePresenter.CloseMasterDetailPage()

中得到空引用异常

这个问题 How to Exit (or Navigate out of )a MasterDetail page to a simple ContentPage in Xamarin. Forms? 直接涵盖了我想做的事情 Xamarin.Forms,我只是不确定如何在 MvvmCross 中做同样的事情。

在您的 LoginPage 中添加 MvxContentPagePresentation 属性 NoHistory = true

然后简单地导航到登录页面,当用户登录后,导航到您的 MasterDetail 页面也使用 NoHistory = true

当用户再次注销时,只需导航到您的 LoginPage,作为 NoHistory = true,MasterDetail 将被完全删除。

[MvxContentPagePresentation(WrapInNavigationPage = false, NoHistory = true)]
public partial class LoginPage : MvxContentPage<LoginViewModel>
{
    public LoginPage()
    {
        InitializeComponent();
    }
}