Я бы порекомендовал использовать пользовательский UriMapper. Это позволяет не беспокоиться о том, что ваша главная страница переходит на страницу входа в систему, а затем управляет стеком навигации.
Подробнее об этом подходе можно прочитать здесь here.
Для этого измените элемент DefaultTask в WMAppManifest, чтобы перейти к поддельной странице
<DefaultTask Name="_default" NavigationPage="LaunchPage.xaml" />
Затем создайте UriMapper класс
public class LoginUriMapper : UriMapperBase
{
public override Uri MapUri(Uri uri)
{
if (uri.OriginalString == "/LaunchPage.xaml")
{
// Determine for yourself how to store login info, AppSettings (IsoStore) is a good choice)
if (NeedsLoginInfo)
{
uri = new Uri("/LoginPage.xaml", UriKind.Relative);
}
else
{
uri = new Uri("/MainPage.xaml", UriKind.Relative);
}
}
return uri;
}
}
И последнее, установите картографа для применения в событие Application_Launching
private void Application_Launching(object sender, LaunchingEventArgs e)
{
RootFrame.UriMapper = new LoginUriMapper();
// You should also handle logging in if you already have info
// Determine for yourself how to store login info, AppSettings (IsoStore) is a good choice)
if (NeedsLoginInfo == false)
{
LoginObject.Login();
}
}
И в заявке _Активированное событие, если приложение находится под надгробным камнем
private void Application_Activated(object sender, ActivatedEventArgs e)
{
if (e.IsApplicationInstancePreserved == false)
{
RootFrame.UriMapper = new LoginUriMapper();
}
}
Блестящий. Я не знал об этом методе. Спасибо за информацию. – Jon
см. Мою дополнительную информацию о событии Application_Activated –