2015-08-07 7 views
22

Я только начал изучать разработку приложений UWP в Windows 10 Pro, используя Visual Studio 2015 Community Edition. Я попытался изменить C# version of the official "Hello, world" sample, установив атрибуты Width и Height тега страницы в MainPage.xaml. Интересно, что когда я запустил приложение, его размер будет другим. Более того, если я изменил размер своего окна и перезапустил его, приложение, похоже, помнит его прежний размер окна.Приложение Windows 10 UWP - установка размера окна на рабочем столе

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

ответ

41

Попробуйте установить PreferredLaunchViewSize в MainPageконструктор вот так.

public MainPage() 
{ 
    this.InitializeComponent(); 

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

Update

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

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

Интересно, спасибо. Можно ли установить это в XAML? – kol

+0

К сожалению, я так не думаю. –

+1

Когда вы думаете, вы не устанавливаете размер на главной странице, вы устанавливаете родительский родительский элемент главной страницы, который является родительским элементом. Я не думаю, что для этого есть прямой доступ к XAML. –

9

Привет У меня есть решение вашей проблемы, дело в том, что вы на самом деле не имеют контроль над размером окна, и даже если вы будете пытаться повторно размер, то он может не сработать. Я задал тот же вопрос на форумах MSDN и получил ответ здесь

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

кстати вот решение в обработчике события «OnLaunched» или в обработчике события «OnActivated» найти:

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

это лучше, если вы поместите этот код в «OnActivated()» обработчик событий, как он установит свои определенные S ize, когда приложение запускается и становится активным после любых перерывов.

В «DesiredSize» Расчет 800 является ширина и 600 по высоте необходим этот расчет, поскольку размер в ДПИ, поэтому вы должны преобразовать его из пикселей DPI

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

+3

Ответы только на связь - это не путь SO. Ссылки могут быть устаревшими когда-нибудь. Положите важную информацию в свой ответ! – jogo

Смежные вопросы