我的应用程序在触摸屏信息亭上以全屏模式运行。有一个MediaPlayerElement可以在我的MainPage上的循环中播放来自Youtube的视频。
我希望用户能够切换到视频的全屏播放,然后返回到MainPage。如果我启用TransportControls,全屏视频播放工作正常,但退出全屏时整个应用程序切换到窗口模式。
有没有办法在不订阅页面的SizeChanged事件的情况下更改此行为,然后在检测到窗口模式时切换回全屏?
答案 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