MVVMパターンを遵守しているWP7アプリケーションをプログラミングしています。ナビゲート時にインスタンスの作成を管理する方法
私は、ViewModelの各インスタンスが1つだけであることを保証するViewModelLocatorを持っています。これらのViewModelは、アプリケーションの起動時に作成されます。 ViewModelsはメッセージを使用して互いに通信します。私は次のページにナビゲートするためにメッセージを使用します(NavigationService.Navigate()を使用しています。これはMainPage CodeBehindから発生します)。CodeBehindにある唯一の機能です。 ViewModelは、ViewModelLocatorにページ内のDataContextを設定することによって一緒に接続されます。
Everythigは一目ぼれです。
しかし、各ナビゲーション中にViewModelLocator(ViewModelLocator)からViewModelに接続された新しいPageインスタンスが作成されます。その結果、ユーザーがページを頻繁に切り替えると、1つのViewModelに複数のページインスタンスが接続されます。もちろん、1つのページには1つのページしか表示されません。
非常に単純な解決策はNavigationCacheを設定することができますが、WP7では読み込み専用です。
私は望ましくない動作の解決策を探しています。
ページのアンロード機能で、DataContextをNullに設定しようとすると、GCがページをより迅速に収集します。 – BigL