C# UWP закрытие приложения нескольких просмотров

У меня есть приложение UWP, которое динамически создает другое представление. Но проблема в том, что когда я закрываю первое окно, второе все еще остается включенным.

С помощью этого кода я создаю новый вид:

        CoreApplicationView newView = CoreApplication.CreateNewView();
        int newViewId = 0;
        await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            Frame frame = new Frame();
            frame.Navigate(typeof(SecondPage), null);
            Window.Current.Content = frame;
            // You have to activate the window in order to show it later.
            Window.Current.Activate();

            newViewId = ApplicationView.GetForCurrentView().Id;
        });
        bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);

Как закрыть приложение, когда пользователь закрывает первое окно?

1 ответ

Пожалуйста, обратитесь к Показать несколько просмотров для приложения.

Если дополнительные виды открыты, окно основного вида можно скрыть, например, нажав кнопку закрытия (x) в строке заголовка окна, но его поток остается активным. Вызов Close в окне основного вида вызывает InvalidOperationException происходить. (Использование Application.Exit закрыть ваше приложение.) Если поток основного представления прекращается, приложение закрывается.

private void Btn_Click(object sender, RoutedEventArgs e)
{
    Application.Current.Exit();
}

Вы также можете выбрать, хотите ли вы закрыть начальное окно и удалить его с панели задач, указав значение ApplicationViewSwitchingOptions. Так что на вашем рабочем столе есть один вид. Вам просто нужно закрыть его для закрытия приложения.

 private int currentViewId = ApplicationView.GetForCurrentView().Id;
 private async void ShowNewView()
 {
     CoreApplicationView newView = CoreApplication.CreateNewView();
     int newViewId = 0;
     await newView.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
     {
         Frame frame = new Frame();
         frame.Navigate(typeof(SecondPage), null);
         Window.Current.Content = frame;
         Window.Current.Activate();
         newViewId = ApplicationView.GetForCurrentView().Id;
     });

     await ApplicationViewSwitcher.SwitchAsync(newViewId, currentViewId, ApplicationViewSwitchingOptions.ConsolidateViews);
 }
Другие вопросы по тегам