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