1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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();
}
1
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?