Не удается установить ViewSize окна UWP при первом запуске приложения - PullRequest
1 голос
/ 24 апреля 2020

Я читал много билетов здесь и на других форумах по этой проблеме. Ни одному из них не удалось мне помочь.

Что мне нужно, так это просто - при первом запуске приложения мне нужно, чтобы приложение запускалось в развернутом окне (но НЕ в полноэкранном режиме). В любом другом случае я хочу, чтобы размер приложения автоматически изменялся (это последний размер, с которым оно было закрыто).

Здесь: https://docs.microsoft.com/en-us/uwp/api/windows.ui.viewmanagement.applicationview.preferredlaunchwindowingmode?view=winrt-18362

.. сказано, что: Для самого первого запуска приложения PreferredLaunchWindowingMode всегда будет Auto, а ApplicationView.PreferredLaunchViewSize будет определяться системными политиками. API применяется к следующему запуску приложения.

К сожалению, это происходит каждый раз, когда PreferredLaunchWindowingMode имеет значение Auto. Это означает, что я никогда не смогу переключиться с Auto на PreferredLaunchViewSize в области моего текущего сеанса.

Когда PreferredLaunchWindowingMode имеет значение Auto, , ни ApplicationView.PreferredLaunchViewSize, ни ApplicationView.GetForCurrentView (). TryResizeView (). размер) работа. Они запускаются с правильным размером, но они ничего не меняют.

Мне нужна альтернатива, которая фактически изменит размер моего окна без секретных зависимостей и принудительного поведения.

Мой текущий код:

App.xaml.cs:

protected override async void OnLaunched(LaunchActivatedEventArgs e)
{
    if (true/*SystemInformation.IsFirstRun*/)
    {
       var displayInfo = DisplayInformation.GetForCurrentView();
       Size displaySize = new Size(displayInfo.ScreenWidthInRawPixels, displayInfo.ScreenHeightInRawPixels);
       ApplicationView.PreferredLaunchViewSize = displaySize;
       ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
       ApplicationView.GetForCurrentView().SetPreferredMinSize(displaySize);  // This DOESN'T work on first launch
    }
    else
    {
      ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.Auto; // This does not get called, because I don't need it yet. When maximizing works, I will run this row for subsequent startups.
    }
    ...
}

MainView.xaml:

private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
    {
        var displayInfo = DisplayInformation.GetForCurrentView();
        Size size = new Size(displayInfo.ScreenWidthInRawPixels, displayInfo.ScreenHeightInRawPixels);
        var appView = ApplicationView.GetForCurrentView();
        appView.TryResizeView(size);

...
}

Я пытался изменить PreferredLaunchWindowingMode до / после InitializeComponent. Я также пытался переместить фрагмент app.xaml.cs в другие места моего метода OnLaunched. Он никогда не работает, когда Mode - Auto, всегда работал, когда Mode был PreferredLaunchViewSize.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...