Настройка размера окна на рабочем столе для приложения Windows 10 UWP
Я только начал изучать разработку приложений UWP для Windows 10 Pro с использованием Visual Studio 2015 Community Edition. Я попытался изменить официальную версию С# "Hello, World!" Пример, установив атрибуты Width
и Height
тега Page в MainPage.xaml.
Интересно, что когда я запускаю приложение, его размер будет другим. Более того, если я изменю размер его окна, а затем перезапущу его, приложение, похоже, запомнит свой предыдущий размер окна.
Можно ли заставить приложение UWP иметь предопределенный размер окна, по крайней мере, на настольных ПК?
Ответы
Ответ 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 Я не проверял это.