カスタム UriMapper を使用することをお勧めします。これにより、メイン ページがログイン ページに移動してからナビゲーション スタックを管理する必要がなくなることを心配する必要がなくなります。
このアプローチの詳細については、こちらをご覧ください。
これを実現するには、WMAppManifest の DefaultTask 要素を変更して、偽のページに移動します。
<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();
}
}
かつ、Application_Activated イベントで、アプリが廃棄されている場合
private void Application_Activated(object sender, ActivatedEventArgs e)
{
if (e.IsApplicationInstancePreserved == false)
{
RootFrame.UriMapper = new LoginUriMapper();
}
}