Bouton plein écran Windows Universal App

Certaines applications du Windows Store ont un bouton Plein écran en plus des boutons Réduire, Agrandir et Fermer de la barre de titre. Ce bouton ressemble au bouton Quitter le plein écran que chaque application a dans la barre de titre si le mode plein écran est actif. Est-ce un contrôle du système et si je peux l’utiliser dans mon application universelle C #?

Vous devrez utiliser la méthode Window.SetTitleBar pour obtenir le comportement souhaité. Par conséquent, vous devrez accomplir quelques étapes:

Tout d’abord, activez l’extension de la vue dans la barre de titre. Veuillez noter que vous ne pouvez définir que la partie gauche de la barre de titre. Les boutons Réduire , Agrandir et Fermer seront toujours là:

 CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true; 

Une fois que vous avez défini cela, vous appelez la méthode Window.SetTitleBar avec un UIElement :

 Window.Current.SetTitleBar(myTitleBar); 

myTitleBar pourrait ressembler à ceci:

                

Un guide étendu de Marco Minerva (comprenant un comportement XAML qui optimisera encore plus ce cas d'utilisation) peut être trouvé ici .

J’ai créé un FullScreenModeTitleBarBehavior (avec un contrôle FullScreenModeTitle ) qui pourrait bien faire ce que vous voulez.

entrez la description de l'image ici

Le comportement doit être associé à votre Page principale et vous permet de spécifier les couleurs de premier plan et d’arrière-plan de la TitleBar . Si vous avez besoin de plus de couleurs, vous pouvez simplement append plus de propriétés au comportement.

La façon dont cela fonctionne est que le comportement déplacera le Content de la Page vers le contrôle FulScreenModeTitle qui compose essentiellement une TitleBar personnalisée avec le Content déplacé.

 // Store the original main page content. var mainPageContent = _mainPage.Content; // Clear the content for now. _mainPage.Content = null; // Move the content of the main page to our title bar control. _customTitleBar.SetPageContent(mainPageContent); // Refill the content with our new title bar control. _mainPage.Content = _customTitleBar; 

Vous pouvez trouver le code source complet ici dans GitHub. Notez également que cette solution a été inspirée par cet exemple particulier du référentiel GitHub de Microsoft.


Quelques problèmes que j’ai trouvés jusqu’à présent

Vous avez peut-être déjà remarqué qu’il y a un écart entre notre bouton de mode plein écran personnalisé et le bouton de réduction . Malheureusement, vous ne pouvez plus le réduire car cet espace est en grande partie réservé par le système (consultez SystemOverlayRightInset pour plus de détails). Si vous rapprochez le bouton personnalisé , le test d’impact échouera, ce qui le rend non cliquable.

En outre, j’ai constaté que si vous utilisez le bouton personnalisé pour quitter le plein écran, ces trois boutons système seront dysfonctionnels jusqu’à ce que vous double-cliquiez sur la TitleBar de TitleBar pour agrandir l’écran. Cela pourrait être un bug. Heureusement, lorsque l’écran est en mode plein écran, le bouton Agrandir est remplacé par un bouton de sortie en plein écran . Nous pouvons donc simplement masquer notre bouton personnalisé et laisser le système gérer la sortie.

Il peut différencier 3 types de mode plein écran 1. Entrer et sortir du mode plein écran. 2. Répondre aux changements en mode plein écran. 3. Lancer en mode plein écran.

Vous pouvez vous référer à cette URL https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/FullScreenMode.

 var view = ApplicationView.GetForCurrentView(); if (view.IsFullScreenMode) { view.ExitFullScreenMode(); rootPage.NotifyUser("Exiting full screen mode", NotifyType.StatusMessage); // The SizeChanged event will be raised when the exit from full screen mode is complete. } else { if (view.TryEnterFullScreenMode()) { rootPage.NotifyUser("Entering full screen mode", NotifyType.StatusMessage); // The SizeChanged event will be raised when the entry to full screen mode is complete. } else { rootPage.NotifyUser("Failed to enter full screen mode", NotifyType.ErrorMessage); } }