在MVVM Light中使用ViewModels?

时间:2012-02-01 23:06:19

标签: c# windows-phone-7 mvvm mvvm-light

基本上我完全使用代码创建了我的应用程序,现在我正在迁移到MVVM。我面临的挑战之一是如何处理持久存储在内存中的ViewModel。

例如在我的应用程序的第一个版本中,我知道一旦用户点击某个页面上的后退按钮,该视图将被丢弃并且所有内容都将被清除,但是当我开始使用ViewModel并导航到该页面时它使用的是上次导航到页面时创建的ViewModel(换句话说,没有调用构造函数)。

现在这是它的工作方式吗?我希望每次向前导航时都重新创建ViewModel,并在每次回击时丢弃它。但就像我说这对我来说是新的。我是否应该使用相同的viewmodel并以某种方式刷新值,以便它不显示旧数据?

1 个答案:

答案 0 :(得分: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;