Je viens de commencer à apprendre le développement d'applications UWP sur Windows 10 Pro à l'aide de Visual Studio 2015 Community Edition. J'ai essayé de modifier version C # de l'exemple officiel "Hello, World!" en définissant les attributs 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 souvenir de sa taille de 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 PC de bureau?
Essayez de définir PreferredLaunchViewSize
dans votre MainPage
constructeur comme ceci:
public MainPage()
{
this.InitializeComponent();
ApplicationView.PreferredLaunchViewSize = new Size(480, 800);
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
}
Comme @kol l'a également souligné, si vous souhaitez une taille inférieure à la valeur par défaut 500x32, vous devrez le réinitialiser manuellement:
ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size(200, 100));
Vous n'avez pas vraiment de contrôle sur la taille de la fenêtre, et même si vous essayez de la redimensionner, elle peut échouer. J'ai posé la même question sur les forums MSDN et j'ai obtenu la réponse ici:
application DirectX universelle Windows 1
BTW, voici la solution dans votre gestionnaire d'événements "OnLaunched" ou dans votre gestionnaire d'événements "OnActivated", trouvez:
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 le calcul de la "taille souhaitée", 800 correspond à la largeur et 600 à la hauteur. Ce calcul est nécessaire, car la taille est en DPI, vous devez donc le convertir des pixels en DPI.
Gardez également à l'esprit que la taille ne peut pas être inférieure à "320x200".
Pour le tout premier lancement d'application, le ApplicationView.PreferredLaunchWindowingMode
est réglé sur ApplicationViewWindowingMode.Auto
indépendamment de ce que vous définissez dans votre code.
Cependant, à partir de cette question sur MSDN , il peut y avoir un moyen de surmonter cela. L'une des réponses donne un moyen de définir cette toute première taille de lancement (en revenant à Auto
après cela).
Si votre objectif est de lancer une seule fois à un
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; } }
P.S. Je n'ai pas testé cela.