別のビューを開くコマンドを持つ ViewModel があります。
public ICommand OpenAnotherViewCommand
{
get
{
return new MvxCommand(() => ShowViewModel<AnotherViewModel>());
}
}
ここまでは順調ですね。次にAnotherViewModel
、最初のビュー モデルに戻りたいと思います。もともと私はこのようなことをしました:
public ICommand ReturnCommand
{
get
{
Dictionary<string, string> parameters = new Dictionary<string, string>();
// Add some stuff from this model to pass to the first view model
return new MvxCommand(() => {
ShowViewModel<FirstViewModel>(parameters);
}
}
}
InitFromBundle
最初のビューモデルにを追加しましたが、これも機能しました。しかし、その後、元の最初のビュー モデルがまだ存在していることに気付きました (イベント ハンドラーが複数回起動しているように見えるため、これに気付きました!)。私ShowViewModel
は新しい を作成しましたFirstViewModel
が、古いものは決して破棄されませんでした (今では非常に明白なようです)。したがって、ビューのスタックは、first -> another -> first
ちょうどあるべきときfirst
です。
そのため、顔をパーミングした後、ShowViewModel
inReturnCommand
をに置き換えClose(this)
たところ、ナビゲーションの問題が修正され、不要なビューモデルの長い行が生成されなくなりました。ただし、私が失ったのは、データをAnotherViewModel
最初のものに戻す機能です。
では、2 番目のビュー モデルが閉じられたときに、最初のビュー モデルにデータを戻すにはどうすればよいでしょうか?