Xamarin形成导航Backpress防止注销

时间:2019-01-23 06:14:29

标签: xamarin.forms

我正在创建一个xamarin表单应用程序。我的应用程序流程是 LOGIN-> MAINPAGE 。主页是底部页面,包含三个选项。 1.DashBoard,2.Settings,3.User 。  我在仪表板类工具栏上添加了注销图标。我的问题是,每当用户单击注销时,屏幕都会导航到登录页面。但是,如果用户按下后退按钮,它将转到上一主页。我想禁用它。

从登录页面导航到主页的图像是这样的。

 Navigation.InsertPageBefore(new MainPage(), this);
   await Navigation.PopAsync();

我的App.xaml.cs -我正在使用导航到主页的验证

if (Settings.Generalsettings != string.Empty)
            {

                MainPage = new NavigationPage(new MainPage());
            }
            else {
                MainPage = new NavigationPage(new Login());

            }

我的注销按钮单击Dashboard.cs

   private  void logout_Clicked(object sender,EventArgs e)
        {

                    Settings.ClearAllData();           
                    Navigation.PushAsync(new Login());               

        }

2 个答案:

答案 0 :(得分:1)

在这里您再次按下登录页面,因为该登录页面已经在导航堆栈中。因此,当您单击“后退”按钮时,它将显示登录页面。您可以执行以下操作:MainPage = new NavigationPage(new MainPage());  从App.Xaml.cs页面调用

public App()
    {
        InitializeComponent(); MainPage = new LoginPage();

}

  // and when login button pressed from login page do like this
private  void loginButton_Clicked(object sender,EventArgs e)
    {
        NavigationPage navigationRootPage = new NavigationPage(new MainPage());
        navigationRootPage.BarTextColor = Color.White;
        MainPage = navigationRootPage;

    }

//当您点击注销按钮

private  void logout_Clicked(object sender,EventArgs e)
    {

                Settings.ClearAllData();           
                MainPage = new LoginPage();             

    }

答案 1 :(得分:1)

有两种方法,一种是使用视图模型,另一种是只需导航

await _navigationService.NavigateAsync("app:///NavigationPage/Splash");

第二,如果您仅使用表单,则可以使用登录页面设置主页

MainPage = new LoginPage();

这将清除您的后备栈并导航到特定页面。