Application Windows 10 UWP – Définition de la taille de la fenêtre sur le bureau

Je viens de commencer à apprendre le développement d’applications UWP sous Windows 10 Pro à l’aide de Visual Studio 2015 Community Edition. J’ai essayé de modifier la version C # de l’exemple officiel “Hello, world” en définissant les atsortingbuts Width et Height de la balise Page dans MainPage.xaml. Fait intéressant, lorsque je lance l’application, sa taille sera différente. De plus, si je redimensionne sa fenêtre puis la redémarre, l’application semble se rappeler de la taille de sa fenêtre précédente.

Est-il possible de forcer une application UWP à avoir une taille de fenêtre prédéfinie, au moins sur les ordinateurs de bureau?

Essayez de définir PreferredLaunchViewSize dans le MainPage votre MainPage comme ceci.

 public MainPage() { this.InitializeComponent(); ApplicationView.PreferredLaunchViewSize = new Size(480, 800); ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize; } 

Mettre à jour

Comme @kol l’a également souligné, si vous souhaitez une taille inférieure à 500×320 par défaut, vous devez la réinitialiser manuellement.

 ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size(200, 100)); 

Bonjour, j’ai une solution à votre problème, le problème est que vous n’avez pas vraiment le contrôle sur la taille de la fenêtre, et même si vous essayez de la redimensionner, elle risque d’échouer. J’ai posé la même question sur les forums MSDN et j’ai eu la réponse ici

https://social.msdn.microsoft.com/Forums/en-US/3110e17d-b7c8-4040-8e25-a27df7595f13/windows-10-universal-directx-application?forum=wpdevelop

Voici donc la solution dans votre gestionnaire d’événements “OnLaunched” ou dans votre gestionnaire d’événements “OnActivated”.

 Window.Current.Activate(); 

Et remplacez-le par:

 float DPI = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().LogicalDpi; Windows.UI.ViewManagement.ApplicationView.PreferredLaunchWindowingMode = Windows.UI.ViewManagement.ApplicationViewWindowingMode.PreferredLaunchViewSize; var desiredSize = new Windows.Foundation.Size(((float)800 * 96.0f / DPI), ((float)600 * 96.0f / DPI)); Windows.UI.ViewManagement.ApplicationView.PreferredLaunchViewSize = desiredSize; Window.Current.Activate(); bool result = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().TryResizeView(desiredSize); 

Il est préférable de placer ce code dans le gestionnaire d’événements “OnActivated ()”, car il définira votre taille définie au démarrage de l’application et lorsqu’elle deviendra active après toute interruption.

Dans “désiré”, le calcul 800 correspond à la largeur et 600 à la hauteur. Ce calcul est nécessaire car la taille est en DPI. Vous devez donc le convertir de pixels en DPI.

Gardez également à l’esprit que la taille ne peut pas être inférieure à “320×200”

Lors du tout premier lancement de l’ ApplicationView.PreferredLaunchWindowingMode , ApplicationView.PreferredLaunchWindowingMode est défini sur ApplicationViewWindowingMode.Auto indépendamment de ce que vous avez défini dans votre code.

Cependant, à partir de cette question sur MSDN , il peut y avoir un moyen de surmonter cela. Une des réponses permet de définir la toute première taille de lancement (en revenant à Auto suite).

Si votre objective est de ne lancer qu’une seule fois sur PreferredLaunchViewSize , vous pouvez utiliser cette solution grossière (à vous de choisir une meilleure implémentation avec votre style de codage!: P).

 public MainPage() { this.InitializeComponent(); var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; if (localSettings.Values["launchedWithPrefSize"] == null) { // first app launch only!! ApplicationView.PreferredLaunchViewSize = new Size(100, 100); ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize; localSettings.Values["launchedWithPrefSize"] = true; } // resetting the auto-resizing -> next launch the system will control the PreferredLaunchViewSize ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto; } } 

PS je n’ai pas testé cela.