Развернуть окно приложения 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();
        }