private void Nav_BackRequested(object sender, BackRequestedEventArgs e) { if (SubstitutionBackNavigation.Count > 0) { var substitutionBackNavPair = SubstitutionBackNavigation.Last(); var action = substitutionBackNavPair.Value; if (SubstitutionBackNavigation.Count == 0) { var nav = Windows.UI.Core.SystemNavigationManager.GetForCurrentView(); nav.BackRequested -= Nav_BackRequested; // バックナビゲーションが出来ない場合にBackButtonを非表示に var pageManager = App.Current.Container.Resolve <PageManager>(); if (!pageManager.NavigationService.CanGoBack()) { nav.AppViewBackButtonVisibility = Windows.UI.Core.AppViewBackButtonVisibility.Collapsed; } } if (action?.Invoke() ?? false) { SubstitutionBackNavigation.Remove(substitutionBackNavPair.Key); } e.Handled = true; } }
protected bool RemoveSubsitutionBackNavigateAction(string id) { if (SubstitutionBackNavigation.ContainsKey(id)) { if (SubstitutionBackNavigation.Count == 1) { var nav = Windows.UI.Core.SystemNavigationManager.GetForCurrentView(); nav.BackRequested -= Nav_BackRequested; // バックナビゲーションが出来ない場合にBackButtonを非表示に var pageManager = App.Current.Container.Resolve <PageManager>(); if (!pageManager.NavigationService.CanGoBack()) { nav.AppViewBackButtonVisibility = Windows.UI.Core.AppViewBackButtonVisibility.Collapsed; } } return(SubstitutionBackNavigation.Remove(id)); } else { return(false); } }