Подтвердить что ты не робот

Настройка размера окна на рабочем столе для приложения Windows 10 UWP

Я только начал изучать разработку приложений UWP для Windows 10 Pro с использованием Visual Studio 2015 Community Edition. Я попытался изменить официальную версию С# "Hello, World!" Пример, установив атрибуты Width и Height тега Page в MainPage.xaml.

Интересно, что когда я запускаю приложение, его размер будет другим. Более того, если я изменю размер его окна, а затем перезапущу его, приложение, похоже, запомнит свой предыдущий размер окна.

Можно ли заставить приложение UWP иметь предопределенный размер окна, по крайней мере, на настольных ПК?

4b9b3361

Ответ 1

Попробуйте установить PreferredLaunchViewSize в конструкторе MainPage следующим образом:

public MainPage()
{
    this.InitializeComponent();

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

Как также отметил @kol, если вам нужен любой размер меньше стандартного 500x320, вам нужно будет сбросить его вручную:

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

Ответ 2

Вы действительно не можете контролировать размер окна, и даже если вы попытаетесь изменить его размер, он может потерпеть неудачу. Я задал тот же вопрос на форумах MSDN и получил ответ здесь:

Windows 10 универсальное приложение DirectX

Кстати, вот решение в вашем обработчике событий "OnLaunched" или в вашем обработчике событий "OnActivation" находите:

Window.Current.Activate();

И заменить его на:

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);

Лучше, если вы поместите этот код в обработчик события "OnActivation()", так как он установит ваш определенный размер при запуске приложения и когда он станет активным после любых прерываний.

В расчете "требуемого размера" 800 - это ширина, а 600 - это высота. Это вычисление необходимо, потому что размер указан в DPI, поэтому вам необходимо преобразовать его из пикселей в DPI.

Также имейте в виду, что размер не может быть меньше, чем "320x200".

Ответ 3

Для самого первого запуска ApplicationView.PreferredLaunchWindowingMode устанавливается ApplicationViewWindowingMode.Auto независимо от того, что вы установили в своем коде.

Однако из этого вопроса на MSDN может быть способ преодолеть это. Один из ответов дает возможность установить этот самый первый размер запуска (после этого возвращается к Auto).

Если ваша цель состоит в том, чтобы запустить только один раз в PreferredLaunchViewSize, вы можете использовать это грубое решение (до вас, для лучшей реализации с вашим стилем кодирования!: 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 Я не проверял это.