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

问题描述 投票:2回答:1

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

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

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

c# uwp windows-10-universal uwp-xaml
1个回答
4
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.