我们正在使用Catel Framework 3.9(因为我们正在制作中,因此无法升级到更新的版本)。我最近注意到,当多次打开ViewModel时,ViewModel会保留在内存中。
我将问题跟踪到一个绑定到View的DTO并使用[Model]
属性。 DTO继承Catel.ModelBase
,因此它会自动实现INotifyPropertyChanged
。此外,所有属性都是DependencyProperties(使用Catel的RegisterProperty
方法)。
我尝试从XAML中删除绑定,但它没有帮助。当我从ViewModel的属性中删除[Model]
属性时,ViewModel不再保留在内存中。
我使用JetBrains dotTrace来分析内存使用情况,它显示Catel.Data.PropertyBag
保留内存,如果属性使用[Model]
属性,似乎不会释放它。请参见附图:在左侧,您可以看到内存中有14个ViewModel实例。
有没有人能够重现这个问题?如果我们不能再使用[Model]属性,还能做些什么呢?该问题是否已在Catel 4.0 +中解决?