Xamarin 删除上一页后,菜单按钮在MasterDetailPage上不可见

Xamarin 删除上一页后,菜单按钮在MasterDetailPage上不可见,xamarin,xamarin.forms,Xamarin,Xamarin.forms,应用程序的主页被设置为导航页面 我有一个常见的场景,我有一个登录页面(ContentPage),然后导航到应用程序的主页(MasterDetailPage) 我在登录页面上运行的代码如下所示: var mainPage = new MasterDetailTestPage(); await this.Navigation.PushAsync(mainPage); this.Navigation.RemovePage(this); // remove login page 问题是菜单按钮在Mas

应用程序的主页被设置为
导航页面

我有一个常见的场景,我有一个登录页面(
ContentPage
),然后导航到应用程序的主页(
MasterDetailPage

我在登录页面上运行的代码如下所示:

var mainPage = new MasterDetailTestPage();
await this.Navigation.PushAsync(mainPage);
this.Navigation.RemovePage(this); // remove login page
问题是菜单按钮在
MasterDetailPage
上不可见

如果在应用程序启动时,我将主页设置为
MasterDetailPage
,如下所示:

var mainPage = new MasterDetailTestPage();
await this.Navigation.PushAsync(mainPage);
this.Navigation.RemovePage(this); // remove login page
MainPage=newNavigationPage(newMasterDetailTestPage())

在这种情况下,将显示菜单按钮。但这只有在一开始就设置好的情况下才有效。如果应用程序以登录页面开始,然后设置
MainPage
,则它不起作用

看起来,
MasterDetailTestPage
不显示菜单按钮,除非它是
NavigationPage
的根页面

我也在一个示例应用程序上复制了这一点。

  • MasterDetailPagewith按钮仅在根页面a
    NavigationPage
    中设置时才会出现。在你的情况下,你应该这样做

    公共部分类应用程序:应用程序 {

  • MenuPage
    包含带有
    列表的MasterDetailPage
    ,然后当导航到另一页(
    LoginPage
    )时,您可以执行逻辑,然后:

    public async void login_clicked(object sender ,EventArgs e)
    {
       //.....your logic
        await Navigation.PopToRootAsync();
    }
    
  • 现在,您可以通过一个可见的按钮返回并导航到您的
    MasterDetailPage
    ,因为它会删除堆栈中的所有页面。我希望它对您有所帮助

      • MasterDetailPagewith按钮只有在根页面a
        NavigationPage
        中设置时才会出现。在您的情况下,您应该这样做

        公共部分类应用程序:应用程序 {

      • MenuPage
        包含带有
        列表的MasterDetailPage
        ,然后当导航到另一页(
        LoginPage
        )时,您可以执行逻辑,然后:

        public async void login_clicked(object sender ,EventArgs e)
        {
           //.....your logic
            await Navigation.PopToRootAsync();
        }
        
      • 现在,您可以通过一个可见的按钮返回并导航到您的
        MasterDetailPage
        ,因为它会删除堆栈中的所有页面。我希望它对您有所帮助