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中当前存在的几个问题。