2012-02-01 5 views
1

基本的に私は自分のアプリケーションを完全にコードを使って作成していましたが、今はMVVMに移行しています。私が直面している課題の1つは、メモリに保持されているViewModelを処理する方法です。MVVM LightでViewModelsを操作しますか?

たとえば、私のアプリの最初のバージョンでは、あるページで戻るボタンを押すと、ビューが破棄され、すべてがクリアされることがわかりましたが、ViewModelの使用を開始して、前回ページに移動したときに作成されたViewModelを使用していました(つまり、コンストラクタは呼び出されませんでした)。

今はこれが動作するはずです。私は前進するたびにViewModelを再作成し、私が戻ってくるたびにそれを破棄することを好むでしょう。しかし、私はこれが私には新しいことだと言ったように。同じビューモデルを使用し、値をリフレッシュして古いデータが表示されないようにする必要がありますか?

答えて

1

ここでは、ファイル(このコードはページのxaml.csである)は、ユーザーがページを離れたとき、私はビューモデルをクリアする方法は次のとおりです。

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) 
     { 
      if (e.NavigationMode == NavigationMode.Back) 
       ViewModelLocator.ClearDetailsViewModel(); 

      base.OnNavigatingFrom(e); 
     } 

ClearDetailsViewModelの実装は

if (_detailsViewModelStatic == null) return; 
_detailsViewModelStatic.Cleanup(); 
_detailsViewModelStatic = null; 
のようなものです