2012-02-01 166 views
1

基本上我完全使用後面的代碼創建了我的應用程序,現在我正在遷移到MVVM。我面臨的挑戰之一是如何處理正在內存中保存的ViewModels。使用MVVM Light中的ViewModels?

例如在我的應用程序的第一個版本中,我知道一旦用戶點擊某個頁面上的後退按鈕,該視圖將被丟棄,並且所有內容都將被清除,但是當我開始使用ViewModel並導航到它使用的是我上次瀏覽頁面時創建的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;