PhoneApplicationPageを使わずページ遷移する

Windows Phone 7でのXAMLページの遷移、通常であればPhoneApplicationPageのコンテキストで以下のように書くだろう。

PhoneApplicationPage.NavigationServiceプロパティを使う
NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative));

これが普通でありPhoneApplicationPageのインスタンスが必要だと考えていたのだが、調べていると以下のように書くこともできることが解った。

Applicationオブジェクトの.RootVisualプロパティを使う
var frame = (PhoneApplicationFrame)Application.Current.RootVisual;
frame.Navigate(new Uri("/Page2.xaml", UriKind.Relative));

これならばViewに依存しないページナビゲーションが可能になる。