2012-09-14 56 views
0

我注意到ListBox保留對其私人_anchorItem字段中已刪除項目的引用。如何修復由ListBox的_anchorItem字段引起的內存泄漏?

我執行的步驟如下。 我創建一個帶有列表框的窗口,並將帶有一個項目的ObeservableCollection綁定到該ListBox的ItemSource屬性。然後,在單擊窗口中的項目之後,我通過編程方式清除ObeservableCollection。

此時ListBox爲空,但它的_anchorItem字段仍然對我單擊的項目有引用。我怎樣才能以編程方式刪除引用?

我需要刪除對該項目的引用的原因是因爲它是我的應用程序中的內存泄漏的原因。

+0

也許您可以嘗試將列表框的ItemsSource設置爲null,或者請張貼一些代碼讓我們瞭解您的問題! – michele

+0

嘗試設置SelecteIndex = -1 – Paparazzi

回答

0

我的解決方案是通過反射設置內部成員。它知道這是一個黑客,但最終的記憶問題更成問題。

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



     propertyInfo.SetValue(this, null, null);