いくつかの領域を含む「親」ビューがあり、そこに他のビューをロードします。これらの「子」ビューは常に同じであり、実行時に変更されないため、regionManager.RegisterViewWithRegion...
構文を使用して、アプリケーションの起動時に領域に登録されます。すべてのビューは現在シングルトンで、IoC には Castle Windsor を使用しています。
「INavigationAware」メソッドは、ネストされた領域のビューモデルで呼び出されないことに注意してください。子ビューの初期化とクリーンアップに適した方法は何ですか? 親 VM が子 VM への参照 (注入) を保持することは「許容できる」設計ですか? 次に、親のメソッド内から子 VM である種の初期化/クリーンアップ メソッドを呼び出すことができますOnNavigatedTo()/From()
か?
もう 1 つのオプションは、ビューを一時的なものに変更することです。その後、初期化にコンストラクターを使用するだけで済み、クリーンアップについて心配する必要はありません (これは、ビューが再利用されて表示される前に古い「状態」をクリアするためだけに行います)。唯一の潜在的な問題は、アプリケーションが "イベント サービス" (Prism のイベント ブローカーに似ています) を使用していることです。一部のビュー モデルはパブリッシャーとして機能し、他のビュー モデルはサブスクライバーとして機能します。それらを一時的にすると、イベントサブスクリプションのためにビューモデルがGCされず、これらの「死んだ」ビューがイベントに応答し続けるのではないかと心配しています。これは正しいです?もしそうなら、私はおそらく(上記のように)クリーンアップする方法を実装する必要がありますか?