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

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

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

我希望用户能够切换到全屏播放视频,然后返回主页。如果我启用 TransportControls,全屏视频播放效果很好,但是当退出全屏时,整个应用程序会切换到窗口模式。

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

最佳答案

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

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

相关文章:

c# - 命名空间 "MvxWindowsPage"中不存在名称 "using:Cirrious.MvvmCross.WindowsUWP.Views"

c# - 讲述人未按预期读取 TextBlock 中的文本。仅在选定的文本框中

c# - 使用 CodeDomProvider 隐藏命令提示符

c# - 从文件中读取多个字节数组

c# - 跨 UWP 应用和 Azure 移动服务的持久身份验证

uwp - 在 x :Bind and a IValueConverter? 中使用函数有什么区别

c# - 带 Sympy 的 IronPython 脚本

c# - Google chrome 在后续调用中丢失 MVC Auth Cookie(Set-Cookie 指令)

c# - UWP 绑定(bind)到依赖属性