読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Xamarin.Forms ページ遷移時のデータ受け渡しについて

Xamarin.Forms では、NavigationPage(new Firstpage()) でページを呼び出すと、Navigation.PushAsync(new SecondPage()) でナビゲーションすることができます。PrepareForSegueStartActivity は当たり前ですが使いません。

データの受け渡しについては引数でもデータを渡せるようですので、メモとして残します。簡単な実装なら引数で渡してしまえばいいし、ちゃんと組むなら MVVM で。という感じでしょうか。

var editorName = new Entry {
        Keyboard = Keyboard.Text,
        Placeholder = "Input your name.",
    };
var editorAge = new Entry {  
        Keyboard = Keyboard.Numeric,
        Placeholder = "Input your age.",
    };
var button = new Button {
        Text = "Push me",
        HorizontalOptions = LayoutOptions.Fill,
    };
button.Clicked += (sender, e) =>
    {
        string[] yourData = { editorName.Text, editorAge.Text };
        Navigation.PushAsync(new SecondPage(yourData));
    };

Android の EditText、iOS の Text Field に相当する Entry の Text を引数として次のページに渡してみました。

public SecondPage(string[] str)
{
    this.Content = new Label { 
        Text = "Your name is " + str[0] + " Your age is " + str[1],
        VerticalOptions = LayoutOptions.Center,
        HorizontalOptions = LayoutOptions.Center
    };
}

一応データの受け渡しが出来てます。

スクリーンショット 2014-06-26 13.33.04.png

スクリーンショット 2014-06-26 13.33.25.png

いいのかな…

xamarin-forms/XamarinForms_Navigation at master · ytabuchi/xamarin-forms にアップしておきましたので、こうじゃね?ってのが分かる方は是非教えて下さい><

2014/6/27 追記

増田さん にコメントいただきました。しっかりやる場合は当然 MVVM でやった方が良いとのこと。

以上です。