戻るボタンで複数のページを戻る方法

アプリを作っていると戻るボタンを押したときに前のページじゃなくて前の前のページに戻りたいことがあるかもしれません。今の仕様では残念ながら一つ前のページにしか戻らないのでなんらかの手を施す必要があります。
例えば戻るボタンを押したときのイベント(OnBackKeyPress)を補足して強制的にNavigation.Navigateを呼んで戻りたいページにナビゲートする方法がありますが、これだと審査が通らないようです。
そこでもう一つの解決策としてAppインスタンスにbool変数を用意して、その変数がtrueのときは他のすべてのページのOnNavigatedToでNavigation.GoBackを呼び出します。そうすることで目的のページまで戻ることができます。
下記の例はMainPage ⇒ Page2 ⇒ Page3と遷移したのちに戻るボタンを押してMainPageに戻る場合です。
App.xaml.cs

// このフラグがtrueのときは各ページのOnNavigatedToで
// NavigationService.GoBackを呼ぶ
public bool MustNavigateBack { get; set; }

MainPage.xaml.cs

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    var app = (App)Application.Current;
    app.MustNavigateBack = false;  // 戻ってきた先では必ずfalseにする
}

Page2.xaml.cs

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    var app = (App)Application.Current;
    if (app.MustNavigateBack)
    {
        this.NavigationService.GoBack();
    }
}

Page3.xaml.cs

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
    base.OnBackKeyPress(e);

    // ここでフラグをtrueにすることで、Page2に戻ったときに
    // OnNavigatedToでNavigationService.GoBackが呼ばれる。
    var app = (App)Application.Current;
    app.MustNavigateBack = true;
}

参考:Handling Windows Phone 7 Back Button