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

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

是否有任何方法可以更改此行为而无需预订页面的SizeChanged事件,然后在检测到窗口模式时切换回全屏?

最佳答案

您正在寻找侦听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

关于c# - 查看全屏视频后,以全屏模式运行的UWP C#应用程序切换到窗口模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47916069/

10-13 07:54