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