Как изменить 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());