C# 这种单向绑定会泄漏内存吗?
我在WPF应用程序中使用MVVM模式,出于教育目的,我有一个关于内存泄漏的问题 我一直在使用Postsharp图书馆 我的ViewModel如下所示:C# 这种单向绑定会泄漏内存吗?,c#,wpf,mvvm,memory-leaks,postsharp,C#,Wpf,Mvvm,Memory Leaks,Postsharp,我在WPF应用程序中使用MVVM模式,出于教育目的,我有一个关于内存泄漏的问题 我一直在使用Postsharp图书馆 我的ViewModel如下所示: public class MyViewModel : INotifyPropertyChanged { private ClassA _myClassAField; //ClassA doesn't Implement INotifyPropertyChanged public MyViewModel(ClassA clas
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:
问题:
这个绑定会泄漏内存吗?
在我的测试中,它似乎没有泄漏,但我不明白为什么
绑定到属性名称只是ClassA中未实现INotifyPropertyChanged的一个getter。您的
ClassA
未实现INotifyPropertyChanged
,但您绑定到了类MyViewModel
中的一个属性,它实现了!因此,您不应该有内存泄漏
供参考:
WPF检查以查找实现的东西时存在一个问题
InotifyProperty已更改。如果有数据绑定到某个非
实现此接口后,它会在全局表中生成一条记录。
该记录不会被清除,因为WPF无法在何时进行检查
不再需要该数据库记录
为什么您认为存在内存泄漏?ClassA没有实现INotifyPropertyChanged。我的get属性返回ClassA对象的名称。或者用NotifyPropertyChanged标记的名称属性会覆盖它吗?啊,我明白了!你链接的那篇文章真的很有趣,让我开窍。我刚刚探索了内存泄漏区域,希望对此有更多的了解。@J.Olsson,很高兴能帮助dude
<Textblock Text="{Binding Name, Mode=OneWay}"/>