我有一个在触摸屏信息亭上以全屏模式运行的应用程序。有一个 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
关于c# - 以全屏模式运行的 UWP C# 应用程序在全屏观看视频后切换到窗口模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47916069/