私のUWPアプリケーションでは、2つのフレームがあります。デフォルトフレームではSplitView
、SplitView.Content
にはMainframe
というカスタムフレームがあります。私のアプリは約5ページあり、それらのすべてはMainFrame
にロードされています。 MainPage
は、デフォルトフレーム内にある唯一のページです。これは私がナビゲーションに使用するコードです:UWPの電話機とデスクトップ/ラップトップの異なるナビゲーション動作
public MainPage()
{
this.InitializeComponent();
MainFrame.Navigate(typeof(PageX));
MainFrame.Navigated += MainFrame_Navigated;
SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
}
private void MainFrame_Navigated(object sender, NavigationEventArgs e)
{
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
((Frame)sender).CanGoBack ?
AppViewBackButtonVisibility.Visible :
AppViewBackButtonVisibility.Collapsed;
}
private void OnBackRequested(object sender, BackRequestedEventArgs e)
{
if(MainFrame.CurrentSourcePageType == typeof(PageX))
{
MainFrame.BackStack.Clear();
MainFrame.Navigate(typeof(PageY));
}
else if (MainFrame.CanGoBack)
{
e.Handled = true;
MainFrame.GoBack();
}
}
デスクトップで期待どおりにこれは動作します(それは私がpageXの午前と戻るボタンをクリックしたときに、私はpageYに取られています、である)が、携帯電話上では動作しますページXから戻るボタンをクリックした場合を除いて、ほとんどの部分で予想されるように、アプリケーションが終了します。しかし、デバッグ中に、私は最初にページを表示することに気付きました。その後、アプリケーションが終了します(それは非常に高速です)。しかし、それは完全に閉じていない、それは最小化され、私は再びアプリを開いて、それはpageYになります。