我有一个登录页面,它是一个导航页面,在这里我导航到主要详细信息页面。但是现在我想在单击注销按钮时返回登录页面。这就是我要做的。 我需要My login page和Master detail page,当我单击注销时,该控件已存在于MDP中并返回“登录”页面。
我的LoginVM
//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>
主Deail页面的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());
}
}
但是我不工作。它成功导航到登录页面,但是在工具栏中,它显示我不想要的注销和后退按钮。那我该怎么做
答案 0 :(得分:0)
view.semanticContentAttribute = .forceRightToLeft
在这里,您将主页的详细信息声明为导航页,并将其设置为当前主页。但是您现在在NagiationPage中,所以当您致电
var masterDetailPage = new MasterDetailPage1();
masterDetailPage.Detail = new NavigationPage(new Page1());
Application.Current.MainPage = masterDetailPage;
您在导航堆栈中推送了一个新的LoginPage,但是仍然可以通过“后退”按钮访问其他页面,您要做的是重新定义主页:
(this.Detail as NavigationPage).PushAsync(new LoginPage());
答案 1 :(得分:0)
首先,您不需要在LoginVM中调用以下代码行。因为最后您要设置Application.Current.MainPage
。
await App.Current.MainPage.Navigation.PopAsync();
您为什么要推送登录页面?如果要完全注销用户,则他/她应该不能通过单击“后退”按钮返回上一页。
我认为,您应该再次设置Application.Current.MainPage
。可能与您在App.xaml.cs
中所做的相同。