アプリケーションを一気に終了させる

基本的にWindows PhoneはルートページでBackキーを押下することで、アプリケーションを終了させます。

Windows Phoneのユーザー操作の一貫性が損なわれてしまいいますので、推奨はされませんが、止む得ない事情でルートページではないページでアプリケーションを終了させる方法が2通り存在します。

XNA FrameworkのGameクラスを使用する方法

GameクラスのExitメソッドを使用します。

ソリューションエクスプローラーでプロジェクトを右クリックして、メニューの中から[参照の追加]を選択します。参照の追加ダイアログから「Microsoft.Xna.Framework.Game」を選択して[追加]ボタンをクリックします。

private void button3_Click(object sender, RoutedEventArgs e) {
    // アプリケーションを終了させる
    var game = new Microsoft.Xna.Framework.Game();
    game.Exit();
}

例外を使用する方法

開発中に例外を発生させてアプリケーションが、強制的に終了させてしまった経験は多々あると思います。

App.xaml.csで下記のコードを実装します。任意のタイミングでQuitメソッドを呼び出すと必ずApplicationQuitExceptionが起きるのでアプリケーションは終了してしまいます。
クラッシュしたエラーではないことを示すために、UnhandledExceptionイベントハンドラでは型のチェックをして何もせずに終了させています。

// ハンドルされない例外の発生時に実行されるコード
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) {
 
    // 意図した例外なので何もせずに終了させる
    if (e.ExceptionObject is ApplicationQuitException) {
        return;
    }
 
    if (System.Diagnostics.Debugger.IsAttached) {
        // ハンドルされない例外が発生しました。デバッガーで中断します。
        System.Diagnostics.Debugger.Break();
    }
}
 
// アプリケーション終了用の例外クラス
private class ApplicationQuitException : Exception { }
 
// アプリケーションを終了させるためのメソッド
public static void Quit() {
    throw new ApplicationQuitException();
}

実際にMainPage.xaml.cs等で使用する場合には、以下のようにシンプルにアプリケーションを終了させることができます。

private void button4_Click(object sender, RoutedEventArgs e) {
    // アプリケーションを終了させる
    App.Quit();
}