void Navigation(PageNavigationEventArgs args) { var pageType = args.PageType; var parameter = args.Paramter; var behavior = args.Behavior; Scheduler.Schedule(async() => { var isMainView = CoreApplication.GetCurrentView().IsMain; if (!args.IsMainViewTarget || !isMainView) { return; } using (var releaser = await _NavigationLock.LockAsync()) { // メインウィンドウでウィンドウ全体で再生している場合は // 強制的に小窓モードに切り替えてページを表示する if (!PlayerViewManager.IsPlayerSmallWindowModeEnabled && PlayerViewManager.IsPlayingWithPrimaryView) { PlayerViewManager.IsPlayerSmallWindowModeEnabled = true; } PageNavigating = true; try { var prefix = behavior == NavigationStackBehavior.Root ? "/" : String.Empty; var result = await NavigationService.NavigateAsync($"{prefix}{pageType.ToString()}Page", parameter); if (result.Success) { PageTitle = PageTitle ?? PageTypeToTitle(pageType); if (behavior == NavigationStackBehavior.NotRemember /*|| IsIgnoreRecordPageType(oldPageType)*/) { ForgetLastPage(); } } Debug.WriteLineIf(!result.Success, result.Exception?.ToString()); } finally { PageNavigating = false; } _ = PlayerViewManager.ShowMainView(); } }); }
void Navigation(PageNavigationEventArgs args) { var pageType = args.PageType; var parameter = args.Paramter; var isForgetNavigation = args.IsForgetNavigation; Scheduler.Schedule(async() => { using (var releaser = await _NavigationLock.LockAsync()) { // メインウィンドウでウィンドウ全体で再生している場合は // 強制的に小窓モードに切り替えてページを表示する if (!PlayerViewManager.IsPlayerSmallWindowModeEnabled && PlayerViewManager.IsPlayingWithPrimaryView) { PlayerViewManager.IsPlayerSmallWindowModeEnabled = true; } PageNavigating = true; try { if (CurrentPageType == pageType && PageNavigationParameter == parameter) { return; } await Task.Delay(30); var oldPageTitle = PageTitle; PageTitle = ""; var oldPageType = CurrentPageType; CurrentPageType = pageType; var oldPageParameter = PageNavigationParameter; PageNavigationParameter = parameter; await Task.Delay(30); if (!NavigationService.Navigate(pageType.ToString(), parameter)) { CurrentPageType = oldPageType; PageTitle = oldPageTitle; PageNavigationParameter = oldPageParameter; } else { if (isForgetNavigation || IsIgnoreRecordPageType(oldPageType)) { ForgetLastPage(); } } } finally { PageNavigating = false; } _ = PlayerViewManager.ShowMainView(); } }); }