我在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}"/>问题:
这个绑定会泄漏内存吗?在我的测试中,它似乎没有泄漏,但我不明白为什么?
绑定到属性名只是来自没有实现ClassA的INotifyPropertyChanged的一个getter。
发布于 2016-05-23 14:28:56
您的ClassA没有实现INotifyPropertyChanged,但是您正在绑定到类MyViewModel中的一个属性,这个属性是这样的!因此,您不应该有内存泄漏。
在WPF检查以找到实现INotifyProperyChanged的东西时,存在一个问题。如果存在不实现此接口的对象的数据库,那么它将在全局表中创建记录。该记录不会被清理,因为WPF无法检查何时不再需要该DB记录。
https://stackoverflow.com/questions/37393198
复制相似问题