概要
Silverlightアプリケーション内の画面遷移を行うための機能を提供しています。
名前空間:System.Windows.Navigation
System.Object
+--System.Windows.Navigation.NavigationService
Tips
NavigationServiceを使って画面遷移を行う
PhoneApplicationPageインスタンスは、NavigationServiceプロパティを持っています。このNavigationServiceプロパティ
を利用して画面遷移を行います。
画面遷移先はUriオブジェクトを用いて指定します。URLはルートからのxamlの場所を指します。
画面遷移を行う
private void button1_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate(new Uri("/SubPage.xaml")); }
パラメータ付きで画面遷移を行う
画面遷移元のページから遷移先へのページに対してURLにクエリ文字列を追記して渡すことが可能です。
例えば、ボタンがタップすると下記のURLに遷移させた場合です。「?」から始まるのがクエリ文字列で、その中の「&」で区切られた文字列が「キー=値」の形で定義されています。
/SubPage.xaml?index=1&title=sub_page
遷移先のページでパラメータに含まれているindex
とtitle
の値を取得するためにどうすれば良いのか実装してみましょう。
private void button1_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate( new Uri("/SubPage.xaml?index=1&title=sub_page")); }
index
とtitle
がそれぞれ存在しているかどうかを確認した上で、QueryStringプロパティから値を取得させています。
protected override void OnNavigatedTo(NavigationEventArgs e) { // クエリ文字列を取得する var query = NavigationContext.QueryString; // クエリ文字列に「index」があるかどうかをチェックする if (query.ContainsKey("index")) { var index = query["index"]; // 例) indexを使ってWebAPI等から情報を収集する } // クエリ文字列に「title」があるかどうかをチェックする if (query.ContainsKey("title")) { // titleが含まれていればページタイトルとして設定する PageTitle.Text = query["title"]; } }