C# Xamarin页面导航更改

C# Xamarin页面导航更改,c#,xaml,xamarin.forms,xamarin.android,C#,Xaml,Xamarin.forms,Xamarin.android,我的应用程序中有3页-主页、第1页和第2页 Page2包含一个按钮,当单击该按钮时,将执行以下代码- Navigation.PushAsync(new Page1()); 第1页被加载 现在,当我按下Page1上的back按钮时,我希望它加载主页面,但是Page2被加载 我试过覆盖后退按钮- protected override bool OnBackButtonPressed() { Navigation.PushAsync(new M

我的应用程序中有3页-主页、第1页和第2页

Page2包含一个按钮,当单击该按钮时,将执行以下代码-

Navigation.PushAsync(new Page1());
第1页被加载

现在,当我按下Page1上的back按钮时,我希望它加载主页面,但是Page2被加载

我试过覆盖后退按钮-

        protected override bool OnBackButtonPressed()
        {
            Navigation.PushAsync(new MainPage());
            return true;
        }
而且还使用

 Navigation.PopAsync();

但是这两个都不起作用。

如果
MainPage
是根页面,请尝试使用
Navigation.poptroot()
函数。

只有当用户按下硬件后退按钮时,安卓才会触发OnBackButtonPressed事件

protected override bool OnBackButtonPressed()
{
    Device.BeginInvokeOnMainThread(async () =>
    {
        base.OnBackButtonPressed();
        await Navigation.PopAsync(true); //Asynchronously removes the top Page from the navigation stack.
    });
    return true;
}

Page2-->Page1,因此back将自然转到Page2,这是上一页。当您按下Page1上的back按钮时,它不会加载Page2,因为当您按下Page1时,Page2没有卸载。Page1出现在顶部,当您点击“后退”按钮时,它将被删除,而Page2一直在那里。在Page2中的按钮上,尝试加载Page1,然后弹出Page2,以便Page1一加载,Page2就被卸载。当你按下第1页上的“后退”按钮时,第2页就不在了。假设主页一直在那个里,那个么主页就会显示出来。