0

Caliburn.micro を初めて使用します。いくつかのネットワーク メッセージをリッスンする ViewModel で実行中のプロセスを開始する単純なアプリがあります。ウィンドウが閉じたら、ビューモデルのプロセスがリッスンするのを止めたいと思います。

ビューは UserControl であるため、ViewModel が正しくクリーンアップできるように、ウィンドウが閉じていることをどのように伝えることができますか?

4

2 に答える 2

2

OnDeactivateビューモデルが実装されているかどうかをオーバーライドできます(または、ロジックを準備したい場合はIScreen、同等に継承します)。Screenこのメソッドは、画面が非アクティブ化されたときに呼び出されます。画面が非boolアクティブ化または閉じているだけの場合にもフラグがあります。

ブートストラッパーで選択した IoC コンテナーからのビュー モデルのみが、その有効期間が正しく接続されます。したがって、そのように VM を取得すると、適切にOnInitialize,OnActivateOnDeactivateが呼び出されます。ビュー モデルを他の方法 (手動など) でインスタンス化し、たとえば でそれらを使用しているConductor場合、運が悪いです...

ビューモデルを実装して使用している場合は、定期的なライフタイムサイクルを強制しようとすると思いますが。IWindowManagerIScreen

于 2013-05-03T19:11:41.223 に答える
1

「信頼してください-私は医者です」と述べたことに加えて、IDeactivateインターフェイスを確認することをお勧めします。

そのインターフェースを実装し、Deactivateメソッドを持ち、そこに必要なものすべてを実装できます。

ライフサイクルに関するカリバーンのドキュメント

于 2013-05-03T19:18:36.517 に答える