2016-08-24 1 views
1

私がしたいのは、ViewModelが不要になった瞬間のイベントからの退会です。私はIDisposableを実装しようとしましたが、誰もDispose()を呼び出すのではなく、Xamarin.FormsやPrism.Formsを呼び出します。Xamarin.Formsでページをポップした後でViewModelを廃棄する方法は?

私たちはXamarin.Formsで作成したアプリを持っています。 MVVMを行うにはPrism.Formsを使用します。新しいページ(スタックを押す)にナビゲートすると、Prism.FormsはViewModelをページに結び付けます。戻る(スタックからポップする)とき、ViewModelはしばらくするとGarbageCollectedを取得します。

ただし、ある時点では、ビューにバインドされていないイベントへのサブスクリプションを持つ同じタイプのViewModelが2つあります。イベントが発生すると、これらのViewModelがすべて動作を開始します。だから私は購読がもはや必要でない瞬間に購読を解除する方法を探しています。

解決方法はありますか?

答えて

2

ビューよりもメモリにViewModelが存在しないようにするには、OnDisappearing()ビューのイベントでDispose()が呼び出されていることを確認することができます。

イベントの購読と購読解除だけを気にしてから、OnAppearing()OnDisappearing()で行う方がよいでしょう。その場合、ビューが表示されなくても、ビューモデルにイベントハンドラが存在していないことを確認できます。

+2

ありがとう、私はそれを試してみます。 Disappearing()は、Dailer画面(Androidの場合)のようなインテントを呼び出すときにも起動されます。だから私はAppearing()のイベントを再度購読しなければならないでしょう。 –

関連する問題