基本上我完全使用代码创建了我的应用程序,现在我正在迁移到MVVM。我面临的挑战之一是如何处理持久存储在内存中的ViewModel。
例如在我的应用程序的第一个版本中,我知道一旦用户点击某个页面上的后退按钮,该视图将被丢弃并且所有内容都将被清除,但是当我开始使用ViewModel并导航到该页面时它使用的是上次导航到页面时创建的ViewModel(换句话说,没有调用构造函数)。
现在这是它的工作方式吗?我希望每次向前导航时都重新创建ViewModel,并在每次回击时丢弃它。但就像我说这对我来说是新的。我是否应该使用相同的viewmodel并以某种方式刷新值,以便它不显示旧数据?
答案 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;