在全屏模式下运行的UWP C#应用程序在查看全屏视频后切换到窗口模式

时间:2017-12-21 00:05:28

标签: c# uwp windows-10-universal uwp-xaml

我的应用程序在触摸屏信息亭上以全屏模式运行。有一个MediaPlayerElement可以在我的MainPage上的循环中播放来自Youtube的视频。

我希望用户能够切换到视频的全屏播放,然后返回到MainPage。如果我启用TransportControls,全屏视频播放工作正常,但退出全屏时整个应用程序切换到窗口模式。

有没有办法在不订阅页面的SizeChanged事件的情况下更改此行为,然后在检测到窗口模式时切换回全屏?

1 个答案:

答案 0 :(得分:4)

您正在寻找在MediaPlayerElement.IsFullWindowProperty上侦听更改的DependencyObject.RegisterPropertyChangedCallback方法。

long token;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    token = mediaPlayer.RegisterPropertyChangedCallback(MediaPlayerElement.IsFullWindowProperty, OnMediaPlayerFullWindowChanged);
    base.OnNavigatedTo(e);
}

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    mediaPlayer.UnregisterPropertyChangedCallback(MediaPlayerElement.IsFullWindowProperty, token);
}

然后你想要实现回调方法,它将负责切换回全屏。

private void OnMediaPlayerFullWindowChanged(DependencyObject sender, DependencyProperty dp)
{
    MediaPlayerElement mpe = (MediaPlayerElement)sender;

    if (mpe != null && dp == MediaPlayerElement.IsFullWindowProperty && !mpe.IsFullWindow)
    {
        ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
    }  
}

相关资源:

MediaPlayerElement Class example implementing RegisterPropertyChangedCallback

UWP Windows 10 App, Windows startup size and full screen