1

別のビューを動的に作成する UWP アプリがあります。しかし、問題は、最初のウィンドウを閉じると、2番目のウィンドウがまだオンのままになることです。

このコードで、新しいビューを作成しています:

        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 に答える