Как изменить MainPage в формах xamarin во время выполнения?

В формах xamarin,RootPage с мастер-макетом деталей. Моя задача - показать эту страницу после успешного входа пользователя. Я использую мобильный сервис Azure для входа в систему. Я трачу больше времени, чтобы получить результат. Я видел некоторые другие решения, но это решение не отображает основные детали, как ожидалось. Наконец, я получил решение.

Вот код в app.cs

public App()
    {

     Client = new MobileServiceClient("your azure url", "your master key");
        LoadMainPage();

    } public void LoadMainPage()
    {
        if (Client.CurrentUser == null)
        {
            MainPage=new NavigationPage(new SplashPage());
        }
        else
        {
            MainPage = new RootView();;
        }


    }

На странице входа

 async void  OnLoginClicked(object sender, EventArgs args)
    {
        MobileServiceUser user;

        try
        {
            user = await DependencyService.Get<IMobileClient>().LoginAsync(MobileServiceAuthenticationProvider.Facebook);
            Application.Current.MainPage=new RootView();
            await Navigation.PopToRootAsync();

        }
        catch (InvalidOperationException ex)
        {
            if (ex.Message.Contains("Authentication was cancelled"))
            {
                //messageLabel.Text = "Authentication cancelled by the user";
            }
        }
        catch (Exception ex)
        {
          //  messageLabel.Text = "Authentication failed";
        }

    }

1 ответ

Вы должны смотреть на выполнение навигации, а не на изменение маршрутов для этих путей. Взгляните на документацию по Xamarin Navigation здесь: https://developer.xamarin.com/guides/cross-platform/xamarin-forms/getting-started/introduction-to-xamarin-forms/

await Navigation.PushModalAsync(new LoginPage());
Другие вопросы по тегам