如何在 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
.
中所做的相同
我有一个登录页面,它是一个导航页面,在这里我导航到主详细信息页面。但是现在我想在单击注销时返回登录页面 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
.