我正在创建一个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());
}
答案 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();
这将清除您的后备栈并导航到特定页面。