2017-06-20 3 views
0

私はユーザーにリストビュー項目の内容を編集するためのページを提供しています。別のページに移動して、元のページに戻るまで待ってから機能を続行できますか?

public async void OnEdit(object sender, EventArgs e) 
{ 
    var menuItem = ((MenuItem)sender); 

    if (menuItem != null) 
    { 
     var selectedZone = (ViewModels.ZoneViewModel)menuItem.CommandParameter; 

     // Send to edit page with selectedzones' contents. 
     await Navigation.PushAsync(new ZonePage(selectedZone.Name, selectedZone.Address, selectedZone.IdentitySource, selectedZone.Username, selectedZone.Password)); 

     //Wait until user returns from page 

     //Edit logic here 
    }  
} 

これは、ユーザーをそこに連れて行くコンテキストアクションです。だから私は彼が編集ページで編集を終えるまで待つことを望む別のページにユーザーを送信した後、機能を終了するために戻ります。

私はこれを別のやり方で計画していましたが、私が望むやり方にはなりませんでした。私はvar menuItem = ((MenuItem)sender);がリストから選択された項目を取得する必要があり、私の状況でこの仕事をする別の方法を知らない。

これは可能ですか?

答えて

1

MessagingCenter 2ページ間の通信にお試しください。 Xamarin.Forms MessagingCenterは、単純なメッセージ契約の他に、お互いのことを知らなくても、ビューモデルと他のコンポーネントが通信できるようにします。

メッセージで引数を渡すには、Subscribe汎用引数とActionシグネチャで引数Typeを指定します。

引数を指定してメッセージを送信するには、Generic型のパラメーターと、引数の値をSendメソッド呼び出しに含めます。

MessagingCenter.Send<MainPage, string> (this, "Hi", "John"); 

Here is the more detailed official documentation with examples.

+0

ご回答いただきありがとうございます、私はこの作業を得たが、今、私は問題を抱えている、私は思います。私は4つの文字列と1つの文字列の代わりに1つの文字列を送信する必要があります。 5の代わりに1つのメッセージでこれを行うことはできますか?またはこれは不可能ですか? –

+0

docsによると、どんなC#オブジェクトも渡すことができます。だから私はあなたもオブジェクトのリストを渡すことができると仮定します。詳細は、文書を参照してください。 –

関連する問題