Windows 10 app UWP-configuration de la taille de la fenêtre sur le bureau

je viens de commencer à apprendre le développement de l'application UWP sur Windows 10 Pro en utilisant Visual Studio 2015 Community Edition. J'ai essayé de modifier le C# version officielle de la "Hello, world" exemple en définissant les attributs Width et Height de la balise de Page dans MainPage.XAML. Fait intéressant, lorsque je démarre 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 un UWP application pour avoir une taille de fenêtre prédéfinie, au moins sur les ordinateurs de bureau?

24
demandé sur kol 2015-08-07 23:18:29

3 réponses

Essayez le réglage PreferredLaunchViewSize dans votre MainPageconstructeur comme ceci.

public MainPage()
{
    this.InitializeComponent();

    ApplicationView.PreferredLaunchViewSize = new Size(480, 800);
    ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
}

mise à Jour

@kol également souligné, si vous voulez une taille plus petite que la valeur par défaut 500x320, vous devez réinitialiser manuellement.

ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size(200, 100));
49
répondu Justin XL 2015-08-08 10:26:59

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

Window.Current.Activate();

et le remplacer 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 quand l'application démarre et quand elle devient Active après une interruption.

dans le calcul "desiredSize" 800 est la largeur et 600 est la hauteur ce calcul est nécessaire parce que la taille est en DPI donc vous devez le convertir de pixels en DPI

gardez également à l'esprit que la taille ne peut pas être plus petit que "320 x 200"

9
répondu Rafal Rebisz 2015-12-22 22:38:42

pour le tout premier lancement de l'application, le ApplicationView.PreferredLaunchWindowingMode est réglé sur ApplicationViewWindowingMode.Auto peu importe ce que vous définissez dans votre code.

Toutefois, à partir de cette question sur MSDN, il y a peut être un moyen de surmonter ce. Une des réponses donne une façon de définir cette toute première taille de lancement (revenir à Auto après que).

si votre but est de ne lancer qu'une seule fois à un PreferredLaunchViewSize, vous pouvez utiliser cette solution rude (à vous de choisir pour 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.

1
répondu binaryfunt 2018-03-19 13:55:08