[Windows ストア アプリ] ページ間ナビゲーション3

今回は、ページ間でのデータの受け渡しについて説明します。

あるページから、ほかのページに遷移するためには Frame.Navigateメソッドを使用します。このメソッドの第2引数には、遷移先のページに渡したいデータをセットすることができます。

遷移元のコード例は以下の通りです。

遷移先はSubPageで、遷移先に渡すデータはtextBox1.Textとしています。

VBの例

Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
    Me.Frame.Navigate(GetType(SubPage), TextBox1.Text)
End Sub

C#の例

private void Button_Click(object sender, RoutedEventArgs e)
{
    this.Frame.Navigate(typeof(SubPage), textBox1.Text);
}

次に、遷移先ですが、遷移元から送られてきたデータを受け取るには、navigationHelper_LoadStateイベントを使用します。このイベントの第2引数LoadStateEventArgsの NavigationParameter に遷移元のデータが入っています。

以下は、遷移元のページから送られてきたデータを、navigationHelper_LoadStateイベントで受け取って、TextBlockコントロールに表示する例です。

VBの例

Private Sub NavigationHelper_LoadState(sender As Object, e As Common.LoadStateEventArgs)
    Me.TextBlock1.Text =
        e.NavigationParameter.ToString()
End Sub

C#の例

private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
    textBlock1.Text =
        e.NavigationParameter.ToString();
}

 

[Windows ストア アプリ] ページ間ナビゲーション2

前回はページ間の移動について説明し、最後の方で「ページを移動した後に、入力しておいた文字が消えてしまう」ことについても説明をしました。

この問題は、NavigationCacheModeEnabledに設定することで、解決できます。

コード例は以下の通りです(コンストラクタの中で設定しています)。

VBの例

Public Sub New()

    ' この呼び出しはデザイナーで必要です。
    InitializeComponent()

    Me.NavigationCacheMode = 
        Navigation.NavigationCacheMode.Enabled;
End Sub

C#の例

public MainPage()
{
    this.InitializeComponent();

    this.NavigationCacheMode = 
        Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;
}

では実行例を見てみましょう。(ページ移動についてのコードは、前回のコードを参照してください)。

前回同様、TextBoxには「ページ遷移のテスト」と入力して、ButtonをクリックするとSubPageへ移動します。

ページ遷移の例
ページ遷移の例

次に、タイトル「My Application」の左側に表示されている[←]ボタンをクリックします。

最初に表示されていたページに戻ります。TextBoxには入力してあった「ページ遷移のテスト」という文字が残っていることを確認できます。

入力されていた文字が残っていることを確認

 

 

[Windows ストア アプリ] ページ間ナビゲーション1

今回は、Windows ストア アプリで、別ページへ移動する方法について説明します。

Windowsアプリケーションの場合は、別ページ(というかWindowですね)に移動する場合は Showメソッドや ShowDialogメソッドを使用します。

Windows ストアの場合は、Frame.Navigateメソッドを使用します。

たとえば、Buttonがクリックされたときに SubPage.xaml へ移動するときは以下のようなコードを記述します。

VBの例

Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
    Me.Frame.Navigate(GetType(SubPage))
End Sub

C#の例

private void Button_Click(object sender, RoutedEventArgs e)
{
    this.Frame.Navigate(typeof(SubPage));
}

実行例は以下の通りです。

画面には、TextBoxコントロールとButtonコントロールを貼り付けただけのシンプルなページです。
TextBoxには「ページ遷移のテスト」と入力しています。
Buttonをクリックすると、タイトルが「My Application」と書かれたSubPageへ移動します。

ページ遷移の例
ページ遷移の例

以上のように、ページの移動をすることは非常に簡単です。

今度は、SubPageに表示されているタイトル「My Application」の左隣にある[←]を押してみましょう。
遷移元であるMainPageに戻ります(下図)。

遷移元のMainPage

よく見ると、TextBoxに入力していた「ページ遷移のテスト」という文字が消えています。

せっかく入力したデータが消えてしまっては困るばあいもあると思います。

この件については解決法がありますので、次回説明することとします。