我在WPF应用程序中使用MVVM模式,并且出于教育目的,我对内存泄漏有疑问。
我一直在使用Postsharp库。
我的ViewModel如下所示:
public class MyViewModel : INotifyPropertyChanged
{
private ClassA _myClassAField; //ClassA doesn't Implement INotifyPropertyChanged
public MyViewModel(ClassA classAParameter)
{
_myClassAField = classAParameter;
}
[NotifyPropertyChanged]
public string Name { get { return _myClassAField.Name; } }
.....//Other Code.....
}
的Xaml:
<Textblock Text="{Binding Name, Mode=OneWay}"/>
问题:
这种绑定会泄漏内存吗? 在我的测试中它似乎没有泄漏,但我不明白为什么?
对Property Name的绑定只是来自ClassA的getter,它不会实现INotifyPropertyChanged。
答案 0 :(得分:2)
您的ClassA
没有实现INotifyPropertyChanged
,但您绑定了类MyViewModel
中的某个属性,这样做了!因此,您不应该有内存泄漏。
WPF检查是否存在查找实现内容的问题 INotifyProperyChanged。如果没有数据绑定 实现此接口,然后它在全局表中创建记录。 该记录没有得到清理,因为WPF无法检查何时 不再需要DB记录。