2012-09-14 9 views
0

ListBox가 비공개 _anchorItem 필드에서 삭제 된 항목에 대한 참조를 유지하는 것으로 나타났습니다.ListBox의 _anchorItem 필드로 인한 메모리 누수 문제를 해결하는 방법은 무엇입니까?

수행하는 단계는 다음과 같습니다. ListBox를 사용하여 Window를 만들고 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); 
관련 문제