Ejemplo n.º 1
0
        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();
                }
            });
        }
Ejemplo n.º 2
0
        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();
                }
            });
        }