关于Cat中的c#:ActivityViewModels

ActiveViewModels in Catel

当前,我有一个包含多个ViewModel的解决方案-"普通"和"嵌套"的。
每次创建新的ViewModel实例时,都可以在ViewModelManager.ActiveViewModels中看到新实例。到目前为止,一切都很好。
不幸的是,我在那里也可以看到"旧的" ViewModel实例,实际上,这些实例尚未使用但仍保留在此"缓存"中。
我的第一个问题是,处置这个"旧的" ViewModels我该怎么办?
还有一个附加问题(跟进)...:建议使用ViewModel实例化来避免此行为?
在此先感谢


好吧,好像我找到了。
简短的介绍:
由于我们使用DevExpress WPF(DXWindow),因此无法使用Catel" DataWindow",因此在卸载View时,似乎不会自动关闭ViewModel。
我通过在卸载View时自行关闭ViewModel来解决此问题。片段:

1
2
3
4
5
6
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中当前存在的几个问题。