类别中的ActiveViewModels

本文关键字:ActiveViewModels | 更新日期: 2023-09-27 18:26:09

目前我有一个具有多个ViewModels的解决方案——"普通"answers"嵌套"ViewModels。每次我创建一个新的ViewModel实例时,我都可以在ViewModelManager.ActiveViewModels中看到这个新实例。到目前为止还不错
不幸的是,我也可以在那里看到"旧的"ViewModel实例,事实上,这些实例没有使用,但仍然保留在这个"缓存"中

我现在的第一个问题是,我该怎么处理这个"旧"ViewModel
还有一个附加问题(后续行动)…:建议使用哪种ViewModel实例化来避免这种行为

提前感谢

类别中的ActiveViewModels

好吧,好像我找到了。简短描述:
由于我不能使用Catel"DataWindow",因为我们使用DevExpress WPF(DXWindow),ViewModel似乎不会在卸载视图时自动关闭
我通过在卸载视图时自己关闭ViewModel来解决这个问题。片段:

private void OnUnloaded(object sender, RoutedEventArgs routedEventArgs)
{
  var dc = DataContext as IViewModel;
  if (dc != null && !dc.IsClosed)
    dc.CloseViewModel(null);
}

一旦视图模型真正超出范围,Catel就会自动关闭(并删除)视图模型。我建议您使用最新的预发行版(v.4.0.0),因为它非常稳定,应该可以解决3.9中的几个问题。