如何在 xamarin 表单中从主详细信息页面导航到内容页面?

How to navigate from master detail page to content page in xamarin forms?

我有一个登录页面,它是一个导航页面,在这里我导航到主详细信息页面。但是现在我想在单击注销时返回登录页面 button.here 就是我为此所做的. My login page and Master detail page 我想要,当我点击注销时,控件从 MDP 存在并返回到登录页面。

我的登录虚拟机

//here i navigate to my home page(Master detail page)

if (user.UserName == Employees.UserName && user.Password == Employees.Password)
{
    await App.Current.MainPage.DisplayAlert("success", "Login success", "OK");

    await App.Current.MainPage.Navigation.PopAsync();
    var masterDetailPage = new MasterDetailPage1();
    masterDetailPage.Detail = new NavigationPage(new Page1());
    Application.Current.MainPage = masterDetailPage;
}

我的主详情页面Xml

<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyProject.Views.Profile.MasterDetailPage1"
             xmlns:pages="clr-namespace:MyProject.Views.Profile"
                  >
    <MasterDetailPage.ToolbarItems>
        <ToolbarItem Text="Logout" Clicked="ToolbarItem_Clicked"/>
    </MasterDetailPage.ToolbarItems>
    <MasterDetailPage.Master>

        <pages:MasterDetailPage1Master x:Name="MasterPage" />

    </MasterDetailPage.Master>

  <MasterDetailPage.Detail>

  </MasterDetailPage.Detail>

</MasterDetailPage>

主要详情页面的 CS

public partial class MasterDetailPage1 : MasterDetailPage
{           
    public MasterDetailPage1()
    {
        InitializeComponent();               
    }

    //some other code

    private void ToolbarItem_Clicked(object sender, EventArgs e)
    {
        (this.Detail as NavigationPage).PushAsync(new LoginPage());
        //App.Current.MainPage.Navigation.PushModalAsync(new LoginPage());
    }
}

但我不工作。它成功导航到登录页面,但在工具栏中它显示我不想要的注销和后退按钮。那么我是怎么做到的

                var masterDetailPage = new MasterDetailPage1();
                masterDetailPage.Detail = new NavigationPage(new Page1());
                Application.Current.MainPage = masterDetailPage;

在这里您将主页的详细信息声明为导航页,并将其设置为您的当前主页。但是你现在在你的 NagiationPage 中,所以当你调用

            (this.Detail as NavigationPage).PushAsync(new LoginPage());

您在导航堆栈中推送了一个新的登录页面,但您的其他页面仍然可以通过后退按钮访问,您想要做的是重新定义您的主页:

                Application.Current.MainPage = new LoginPage();

首先,您不需要在您的LoginVM 中调用以下代码行。因为最后你要设置 Application.Current.MainPage.

await App.Current.MainPage.Navigation.PopAsync();

为什么要推送登录页面?如果您想完全注销用户,he/she 应该无法通过单击后退按钮return 返回上一页。

在我看来,您应该重新设置 Application.Current.MainPage。可能与您在 App.xaml.cs.

中所做的相同