【问题标题】:UWP C# app that runs in fullscreen mode switches to windowed mode after viewing video fullscreen在全屏模式下运行的 UWP C# 应用程序在全屏查看视频后切换到窗口模式
【发布时间】:2018-06-03 14:32:40
【问题描述】:

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

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

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

【问题讨论】:

  • 为什么不订阅SizeChanged?它奏效了。

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


【解决方案1】:

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

【讨论】:

  • 我不得不稍微不同地实现这个,因为我的 MediaPlayerElement 在 UserControl 中,但它工作得很好!谢谢@cloudikka!
猜你喜欢
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多