その1:Windows Phone 7アプリを作成してみよう(その1)
その2:Windows Phone 7アプリを作成してみよう(その2)
新しいページを追加しよう
Windows Phone 7では画面のことをページと呼びます。
現在表示しているページから他のページを表示するときは2つのページを一度には表示できないので、表示しているページから他のページに移動する事になります。
アプリケーションバーのメニューで[about]メニューを選択したときに[about]ページに移動するためのコードを考えてみましょう。
そのためにはまずは移動先の[about]ページをプロジェクトに追加してみましょう。
ソリューションエクスプローラーでプロジェクト名を右クリックして[追加]-[新しい項目]メニューを選択して[about]ページを追加します。
なおWindows Phone 7のデザインスタイルとして、初期設定値がpage nameということからも分かるようにページの名前の先頭は小文字のようです。
同時に[main]ページのXAMLファイル名やクラス名は「MainPage」なのでこちらは先頭が大文字で「Page」と後ろにつけていますので、[about]ページも同じような規則に従ってAboutPage.xamlとして追加います。
これで移動先のページができあがりました。
別のページを表示しよう
現在いるページから別のページの移動にはNavigationService.Navigateメソッドを使います。
Windows Phone 7で最初に表示されるのは[Main]ページですから、[main]ページから追加した[about]ページに移動していましょう。
[main]ページのアプリケーションバーに[about]ページに移動するためのメニューとして次のように(10行目)[about]メニューを追加します。
追加したメニューには「Click="About_Menu_Click"」とメニューをタップしたときに呼び出す関数名も記述します。
次に「About_Menu_Click」の文字のところにマウスをもっていって右クリックしてショートカットメニューを表示し[イベントハンドラーへ移動]メニューを選択します。
IDEの表示がデザイナウィンドウからコードウィンドウに切り替わって[About_Menu_Click]サブプロシージャーのコードに移動します。
[About_Menu_Click]サブプロシージャーに移動用のコードを記述してみましょう。
別のページへの移動は、NaviagetionService.Navigateメソッドで引数としてUri型でページの位置を指定します。
Uri型というのが少々曲者でNavigationService.Navigate(“/AboutPage.xaml”)とは指定できないということになります。
幸いなことにUriクラスのNewには引数として文字列で位置指定ができます。
そこで New Uri(“/AboutPage.xaml”, UriKind.Relative)のように指定して[about]ページのUriを指定します。
Private Sub About_Menu_Click(sender As System.Object,
e As System.EventArgs)
Me.NavigationService.Navigate(New Uri("/AboutPage.xaml",
UriKind.Relative))
End Sub
で出来上がりです。さっそく動かして確認して見ましょう。
前のページに戻ろう
Windows Phone 7のハードウェア基本仕様として左下に戻るボタンがあって1つ前のページに戻れるようになっています。
この戻るボタンと同じ機能を持っているのがNavigationService.GoBackメソッドです。
使い方はNavigationService.Navigateメソッドよりも簡単で、引数なしでメソッドを実行するだけです。
例えば[about]ページをどのページからでも呼び出せるようにした場合、呼出し元に戻りたいと思います。Windows Phone 7のハードウェアキーの戻るボタンで戻ればいいという話は無視してGUI的に戻る機能が欲しい!ということであったとしましょう。そのようなときは次のようなコードになります。
Private Sub Back_Button_Click(sender As System.Object,
e As System.Windows.RoutedEventArgs)
Me.NavigationService.GoBack()
End Sub
戻る前に戻ろう
戻る前に戻ろうというのもなんだか不思議な話ですが、ブラウザで[戻る]ボタンで戻った後に使うことがある[進む]ボタンの動きを実現するためという説明でご理解頂けるでしょうか。
Windows Phone 7のハードウェアボタンにも割り当てられていないものなので実際はあまり使わないのかも知れませんがページを移動するという切り口の一つとして次のコードを覚えておくと良いかもしれません。
Me.NavigationService.GoBack()