コード例 #1
0
        private async Task <HohoemaViewManager> GetEnsureSecondaryView()
        {
            if (CoreAppView == null)
            {
                var playerView = CoreApplication.CreateNewView();


                HohoemaSecondaryViewFrameViewModel vm = null;
                int                id   = 0;
                ApplicationView    view = null;
                INavigationService ns   = null;
                await playerView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                {
                    playerView.TitleBar.ExtendViewIntoTitleBar = true;

                    var content = new Views.HohoemaSecondaryViewFrame();

                    var frameFacade = new FrameFacadeAdapter(content.Frame);

                    var sessionStateService = new SessionStateService();

                    ns = new FrameNavigationService(frameFacade
                                                    , (pageToken) =>
                    {
                        if (pageToken == nameof(Views.VideoPlayerPage))
                        {
                            return(typeof(Views.VideoPlayerPage));
                        }
                        else if (pageToken == nameof(Views.LivePlayerPage))
                        {
                            return(typeof(Views.LivePlayerPage));
                        }
                        else
                        {
                            return(typeof(Views.BlankPage));
                        }
                    }, sessionStateService);


                    vm = content.DataContext as HohoemaSecondaryViewFrameViewModel;


                    Window.Current.Content = content;

                    id = ApplicationView.GetApplicationViewIdForWindow(playerView.CoreWindow);

                    view = ApplicationView.GetForCurrentView();

                    view.TitleBar.ButtonBackgroundColor         = Windows.UI.Colors.Transparent;
                    view.TitleBar.ButtonInactiveBackgroundColor = Windows.UI.Colors.Transparent;

                    Window.Current.Activate();

                    await ApplicationViewSwitcher.TryShowAsStandaloneAsync(id, ViewSizePreference.Default, MainView.Id, ViewSizePreference.Default);

                    // ウィンドウサイズの保存と復元
                    if (Helpers.DeviceTypeHelper.IsDesktop)
                    {
                        var localObjectStorageHelper = App.Current.Container.Resolve <Microsoft.Toolkit.Uwp.Helpers.LocalObjectStorageHelper>();
                        if (localObjectStorageHelper.KeyExists(secondary_view_size))
                        {
                            view.TryResizeView(localObjectStorageHelper.Read <Size>(secondary_view_size));
                        }

                        view.VisibleBoundsChanged += View_VisibleBoundsChanged;
                    }

                    view.Consolidated += SecondaryAppView_Consolidated;
                });

                ViewId            = id;
                AppView           = view;
                _SecondaryViewVM  = vm;
                CoreAppView       = playerView;
                NavigationService = ns;
            }

            NowShowingSecondaryView = true;

            return(this);
        }
コード例 #2
0
        private async Task <PlayerViewManager> GetEnsureSecondaryView()
        {
            if (IsMainView && SecondaryCoreAppView == null)
            {
                var playerView = CoreApplication.CreateNewView();


                HohoemaSecondaryViewFrameViewModel vm = null;
                int                id   = 0;
                ApplicationView    view = null;
                INavigationService ns   = null;
                await playerView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                {
                    // SecondaryViewのスケジューラをセットアップ
                    SecondaryViewScheduler = new CoreDispatcherScheduler(playerView.Dispatcher);

                    playerView.TitleBar.ExtendViewIntoTitleBar = true;

                    var content = new Views.HohoemaSecondaryViewFrame();

                    var frameFacade = new FrameFacadeAdapter(content.Frame, EventAggregator);

                    var sessionStateService = new SessionStateService();

                    //sessionStateService.RegisterFrame(frameFacade, "secondary_view_player");
                    ns = new FrameNavigationService(frameFacade
                                                    , (pageToken) =>
                    {
                        if (pageToken == nameof(Views.VideoPlayerPage))
                        {
                            return(typeof(Views.VideoPlayerPage));
                        }
                        else if (pageToken == nameof(Views.LivePlayerPage))
                        {
                            return(typeof(Views.LivePlayerPage));
                        }
                        else
                        {
                            return(typeof(Views.BlankPage));
                        }
                    }, sessionStateService);

                    vm = content.DataContext as HohoemaSecondaryViewFrameViewModel;

                    Window.Current.Content = content;

                    id = ApplicationView.GetApplicationViewIdForWindow(playerView.CoreWindow);

                    view = ApplicationView.GetForCurrentView();

                    view.TitleBar.ButtonBackgroundColor         = Windows.UI.Colors.Transparent;
                    view.TitleBar.ButtonInactiveBackgroundColor = Windows.UI.Colors.Transparent;

                    Window.Current.Activate();

                    await ApplicationViewSwitcher.TryShowAsStandaloneAsync(id, ViewSizePreference.UseHalf, MainViewId, ViewSizePreference.UseHalf);

                    // ウィンドウサイズの保存と復元
                    if (Services.Helpers.DeviceTypeHelper.IsDesktop)
                    {
                        var localObjectStorageHelper = App.Current.Container.Resolve <Microsoft.Toolkit.Uwp.Helpers.LocalObjectStorageHelper>();
                        if (localObjectStorageHelper.KeyExists(secondary_view_size))
                        {
                            view.TryResizeView(localObjectStorageHelper.Read <Size>(secondary_view_size));
                        }

                        view.VisibleBoundsChanged += View_VisibleBoundsChanged;
                    }

                    view.Consolidated += SecondaryAppView_Consolidated;
                });

                SecondaryAppView     = view;
                _SecondaryViewVM     = vm;
                SecondaryCoreAppView = playerView;
                SecondaryViewPlayerNavigationService = ns;

                App.Current.Container.RegisterInstance(SECONDARY_VIEW_PLAYER_NAVIGATION_SERVICE, SecondaryViewPlayerNavigationService);
            }

            return(this);
        }