关于WPF中数据绑定导致内存泄漏的阅读资源?

4
我的WPF应用程序每次替换TreeView的ItemsSource时都会占用内存(我只是构造一个新对象并将其分配给绑定属性)。此外,只有在我使用其他ItemControls中使用的DataTemplate时才会发生内存泄漏。当我删除DataTemplate时,TreeView将恢复显示绑定对象的ToString()方法,但内存损失停止了。
有人能帮我解决这个问题吗?互联网上有关于这个主题的任何资源吗?
我找到了一个进一步的链接,其中包含有关WPF内存泄漏的有用信息:further link.
2个回答

3

非常感谢!但是这些文章都不适用于这种情况。我会尝试在一个独立的代码片段中重现问题,然后发布它。 - Dabblernl

3

在WPF中,有许多绑定场景会导致内存泄漏:

1) 绑定到既不是DependencyProperty也没有实现INotifyPropertyChanged的对象属性上,如果绑定模式不是OneTime,则可能会导致内存泄漏,因为第一个对象将保留在内存中以供属性引用。

2) TreeView存在一个bug,会无限期地保留对第一个选定项的引用。这是由于CreateUntargetedBindingExpression方法中的一个错误,它保留了对第一个选定项的引用,即使它是一个未定位的绑定表达式。可以通过一些反射来解决此问题,使用空绑定项预编译绑定表达式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接