【问题标题】:Working with the ViewModels in MVVM Light?在 MVVM Light 中使用 ViewModel?
【发布时间】:2012-02-01 23:06:18
【问题描述】:
基本上,我完全使用后面的代码创建了我的应用程序,现在我正在迁移到 MVVM。我面临的挑战之一是如何处理持久存在于内存中的 ViewModel。
例如,在我的应用程序的第一个版本中,我知道一旦用户点击某个页面上的后退按钮,该视图将被丢弃并且所有内容都将被清除,但是当我开始使用 ViewModel 并导航到该页面时它使用的是我上次导航到页面时创建的 ViewModel(换句话说,没有调用构造函数)。
现在这是它应该工作的方式吗?我希望每次向前导航时都重新创建 ViewModel 并在每次回击时丢弃它。但就像我说的那样,这对我来说是新的。我是否应该使用相同的视图模型并以某种方式刷新值以使其不显示旧数据?
【问题讨论】:
标签:
c#
windows-phone-7
mvvm
mvvm-light
【解决方案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;