Help us understand the problem. What is going on with this article?

Xamarin.Formsで画面遷移元にパラメータを返す

More than 3 years have passed since last update.

Xamarin.Formsで画面遷移元にパラメータを返すのって皆さんどうやってるんでしょうか。
ViewModelからPushAsyncで画面遷移するのは良いとして、遷移先からPopAsyncで戻ってきたときにイベント発生しないし。。

とりあえずこんな方法でやってみたけど正解がわからない。

遷移元ViewModel

CallBack用のメソッドを作ってあげる

HomePageViewModel.cs
public void CallBack(DateTime inDate, string task)
{
    // 遷移先から戻ってきたときの処理
}

画面遷移する際に遷移先画面のコンストラクタにCallBack用メソッドを引数で渡す

HomePageViewModel.cs
private void AddTask()
{
    Action<DateTime, string> callback = CallBack;

    this.navigation.PushAsync(new AddTodo(callback));
}

遷移先ViewModel

コンストラクタでCallBack用メソッドを受け取り、、

AddTodoViewModel.cs
public AddTodoViewModel(INavigation nav, Action<DateTime, string> callback)
{
    this.navigation = nav;
    this.action = callback;

    TodoCreationCommand = new Command(() => TodoCreation());
}

PopAsyncする前にCallBackメソッドを実行します。
CallBackメソッドの引数に遷移元に戻したいパラメータを設定してやればこのパラメータを使って遷移元画面で処理ができます。

AddTodoViewModel.cs
private void TodoCreation ()
{
    action(InDate, Todo);

    this.navigation.PopAsync();
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away