当我从viewmodel重新导航到我的第一页(Called Mainpage)时,它会显示一个空白页面。
我知道这与堆栈有关但无论我尝试什么它都保持空白。有没有人有任何想法?我找到相关的线程,但不是以相同的方式。
主页构造函数:
public Login()
{
InitializeComponent();
}
viewmodel中的代码
await Application.Current.MainPage.Navigation.PopToRootAsync();
await Application.Current.MainPage.Navigation.PushAsync(new Login());
好的,以获取更多信息:
设置我的根页:
public partial class App : Application
{
public App()
{
InitializeComponent();
NavigationPage navigationPage = new NavigationPage(new Login()); << Renamed mainpage to login after the suggestion over here
MainPage = navigationPage;
}
我在登录后调用我的rootpage。我想确保我的代码在他/她的ADAL令牌过期之后注销我的用户。它会在我的viewmodel中出现:
var auth = DependencyService.Get<IAuthenticator>();
auth.logout();
await Application.Current.MainPage.Navigation.PopToRootAsync(true);
(没有pushAsync根本不导航并保持在当前页面。这在加载新页面并且用户登录后直接调用)
答案 0 :(得分:0)
在你的App.c中,你应该定义一个NavigationPage
通过导航堆栈的根目录。
让我们说:
public class App : Application
{
public App ()
{
NavigationPage navigationPage = new NavigationPage (new MainPage ());
MainPage = navigationPage;
}
}
您的应用程序的根目录是MainPage。
只要您的应用程序调用了Navigation.PopToRootAsync();
方法,您就会返回到您的根页面。 (本例主页)
您不需要将主页推入堆栈,因为它已经存在,您将弹出除根之外的所有页面。
不会调用页面的构造函数,但您可以依赖显示页面时触发的Appearing事件。
答案 1 :(得分:0)
在App.cs中初始化静态NavigationPage变量
public class App : Application
{
public static NavigationPage NavPage;
public App ()
{
NavPage= new NavigationPage (new MainPage ());
MainPage = NavPage;
}
}
使用App.cs的NavigationPage变量从第三页导航主页
public partial class thirdPage : ContentPage
{
public thirdPage ()
{
InitializeComponent ();
main.Clicked += Main_Clicked;
}
private void Main_Clicked(object sender, EventArgs e)
{
App.NavPage.PopToRootAsync(true);
}
}