1

我有一个动态创建另一个视图的 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);

用户关闭第一个窗口时如何关闭应用程序?

4

1 回答 1

-1

请参阅显示应用的多个视图

如果辅助视图打开,则可以隐藏主视图的窗口——例如,通过单击窗口标题栏中的关闭 (x) 按钮——但其线程保持活动状态。在主视图的 Window 上调用 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);
 }
于 2017-03-13T06:29:38.300 回答