Развернуть окно приложения UWP при запуске
есть ли способ (C# или XAML) развернуть окно приложения UWP даже после того, как я изменил размер и закрыл его ранее на рабочем столе?
Я пробовал с ApplicationViewWindowingMode.FullScreen
но это делает приложение идти весь экран и охватывает панель задач Widnows тоже.
2 ответов
вы можете использовать другое значение PreferredLaunchViewSize
С ApplicationViewWindowingMode
и затем установить ApplicationView.PreferredLaunchViewSize
но ключ, чтобы узнать, что в размере будет.
теоретически, вы можете использовать действительно большое число, и окно будет просто расширяться до максимума. Однако, вероятно, безопаснее просто рассчитать размеры экрана в эффективных пикселей.
поэтому, если вы просто вызываете следующий метод до InitializeComponent();
на главной Page
, он должен максимизировать окно при запуске.
private static void MaximizeWindowOnLoad()
{
// Get how big the window can be in epx.
var bounds = ApplicationView.GetForCurrentView().VisibleBounds;
ApplicationView.PreferredLaunchViewSize = new Size(bounds.Width, bounds.Height);
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
}
обратите внимание, что приложение каким-то образом запоминает эти настройки даже после его удаления. Если вы когда-нибудь захотите вернуться к поведению по умолчанию (приложение запускается с предыдущим размером окна), просто позвоните ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto;
один раз и удалите весь код.
обновление
похоже на последнюю версию Windows 10 build,ApplicationView.GetForCurrentView().VisibleBounds
больше не возвращает полное размер окна в эффективном больше пикселей. Так теперь нам нужен новый способ расчета.
оказывается, это довольно просто, так как DisplayInformation
класс также дает нам разрешение экрана, а также масштабный фактор.
ниже приведен обновленный код -
public MainPage()
{
MaximizeWindowOnLoad();
InitializeComponent();
void MaximizeWindowOnLoad()
{
var view = DisplayInformation.GetForCurrentView();
// Get the screen resolution (APIs available from 14393 onward).
var resolution = new Size(view.ScreenWidthInRawPixels, view.ScreenHeightInRawPixels);
// Calculate the screen size in effective pixels.
// Note the height of the Windows Taskbar is ignored here since the app will only be given the maxium available size.
var scale = view.ResolutionScale == ResolutionScale.Invalid ? 1 : view.RawPixelsPerViewPixel;
var bounds = new Size(resolution.Width / scale, resolution.Height / scale);
ApplicationView.PreferredLaunchViewSize = new Size(bounds.Width, bounds.Height);
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
}
}
у меня есть один лайнер, который работает так, как я ожидал, код Justins, но по какой-то причине при использовании ответа Justins мое окно не будет максимизировано... Но затем я изменил что-то, что сделало его максимальным, но я потерял весь свой беглый дизайн, такой как акрил и RevealHighlite...
поэтому я придумал этот лайнер, который держит все мои принципы дизайна счастливыми:
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
что-то отметить:
Я попытался ответить Justins, и я использую его метод MaximizeWindowOnLoad (), который я вызвал сразу после initializeComponent ();
подробное описание:
public class()
{
this.InitializeComponent();
MaximizeWindowOnLoad();
}
private static void MaximizeWindowOnLoad()
{
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
}