WPF Prism では、Regionという機能で画面遷移します。
ナビゲーションの画面遷移(画面の一部であるRegion部分が切り替わる処理)では、遷移先に INavigaitionAware インターフェースを実装します。
その際に生成される IsNavigationTarget メソッドは、ViewModelインスタンスを使い回すかどうかを 戻り値の bool で判断しますが、return false としてもメモリは開放されません。
【IsNavigationTargetの戻り値
- true : インスタンスを使い回す。次回の画面起動時にコンストラクタが呼ばれない。
- false: インスタンスを使い回さない。次回の画面起動時にコンストラクタが呼ばれる。ただし、メモリは開放されない。
ナビゲーション画面遷移時にメモリを開放する方法
ViewModelにIRegionMemberLifetimeインターフェースを実装し、KeepAliveプロパティの値をfalseにします。
また、INavigationAwareインターフェースも合わせて実装している場合、IsNavigationTarget は Trueにしておきます。
ViewModelへの実装例です。
▼SampleViewModel.cs
以上です。