0

我注意到 ListBox 在其私有 _anchorItem 字段中保留了对已删除项目的引用。

我执行的步骤如下。我创建一个带有 ListBox 的 Window,并将带有一项的 ObeservableCollection 绑定到该 ListBox 的 ItemSource 属性。然后,单击窗口中的项目后,我以编程方式清除 ObeservableCollection。

此时 ListBox 为空,但它的 _anchorItem 字段仍然具有对我单击的项目的引用。如何以编程方式删除引用?

我需要删除对该项目的引用的原因是因为它是我的应用程序中内存泄漏的原因。

4

1 回答 1

0

我的解决方案是通过反射设置内部成员。它知道这是一个 hack,但最终内存问题更成问题。

        var propertyInfo = (typeof(ListBox)).GetProperty("AnchorItem", BindingFlags.Instance | BindingFlags.NonPublic);



        propertyInfo.SetValue(this, null, null);
于 2013-03-15T14:41:05.477 回答