2012-02-01 196 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;