更改OnResume事件上的MainPage

时间:2019-08-26 19:12:38

标签: c# xamarin.forms xamarin.android

我正在使用Xamarin Forms开发一个小型应用程序,该应用程序需要签名用户,因此App构造函数中的MainPage设置为LoginPage。

在用户登录后,我将MainPage更改为AppShell,该部分运行平稳,但是每次恢复应用程序时,我都需要将用户重定向到LoginPage。

我的代码如下:

App.xaml.cs

public App()
{
  InitializeComponent();

  DependencyService.Register<RestDataStore>();
  DependencyService.Register<CredentialsService>();

  MainPage = new LoginPage();
}

在LoginPage的ViewModel中重定向到AppShell

public void OnSubmit()
{
  ...               
  Application.Current.MainPage = new AppShell(); 
}

App.xaml.cs

protected override void OnResume()
{
  MainPage = new LoginPage();
}

当我进行这样的页面更改时,什么也不会发生。

在恢复应用程序之后,还有其他方法可以更改MainPage吗? 我在做什么错了?

2 个答案:

答案 0 :(得分:0)

您是否在应用中使用MasterDetailPage?

如果是这样:

    public static void SetDatailPage(Page page)
    {
        if (App.Current.MainPage is MasterDetailPage)
        {
            var masterPage = (MasterDetailPage)App.Current.MainPage;
            masterPage.Detail = new NavigationPage(page);
        }
    }

    protected override void OnResume()
    {
        // Handle when your app resumes
        SetDatailPage(new LoginPage());
    }

答案 1 :(得分:0)

这对我有用:

protected override async void OnResume()
{

  await MainPage.Navigation.PushModalAsync(new NoConnectionPage());

}

唯一的缺点是它将是模态的。