После дальнейшего изучения этого, вот что я нашел:
Если приложение уже вызвало DisplayRequest.RequestActive
и , тогда переходит в полноэкранный режим (вызов ApplicationView.TryEnterFullScreenMode
), то это НЕ работает.(Другими словами, приложение не будет препятствовать сну.)
Если приложение уже вызвало DisplayRequest.RequestActive
, то переходит в полноэкранный режим, затем пытается снова вызвать DisplayRequest.RequestActive
, это все еще НЕ работает.
Но, если приложение уже вызвало DisplayRequest.RequestActive
и когда оно хочет перейти в полноэкранный режим, вызовет DisplayRequest.RequestRelease
перед вызовом ApplicationView.TryEnterFullScreenMode
и затем вызовет DisplayRequest.RequestActive
после входа в полноэкранный режим, он работает.
То же самое происходит при выходе из полноэкранного режима.
Итак, это изменение кода Нико будет работать:
private bool _isRequest;
public void ActivateDisplay()
{
//create the request instance if needed
if (_displayRequest == null)
_displayRequest = new Windows.System.Display.DisplayRequest();
//make request to put in active state
_displayRequest.RequestActive();
_isRequest = true;
info.Text = _isRequest.ToString();
}
public void ReleaseDisplay()
{
//must be same instance, so quit if it doesn't exist
if (_displayRequest != null && _isRequest)
{
_displayRequest.RequestRelease();
_isRequest = false;
info.Text = _isRequest.ToString();
}
else return;
}
public void EnterFullScreen()
{
ApplicationView applicationView = ApplicationView.GetForCurrentView();
applicationView.FullScreenSystemOverlayMode = FullScreenSystemOverlayMode.Minimal;
bool wasRequest = _isRequest;
if (wasRequest)
{
ReleaseDisplay();
}
applicationView.TryEnterFullScreenMode();
if (wasRequest)
{
ActivateDisplay();
}
}
public void ExitFullScreen()
{
ApplicationView applicationView = ApplicationView.GetForCurrentView();
applicationView.FullScreenSystemOverlayMode = FullScreenSystemOverlayMode.Standard;
bool wasRequest = _isRequest;
if (wasRequest)
{
ReleaseDisplay();
}
applicationView.ExitFullScreenMode();
if (wasRequest)
{
ActivateDisplay();
}
}