0

ListBox が削除されたアイテムへの参照をプライベート _anchorItem フィールドに保持していることに気付きました。

私が実行する手順は次のとおりです。ListBox を使用して Window を作成し、ObeservableCollection を 1 つの項目で ListBox の ItemSource プロパティにバインドします。次に、ウィンドウ内の項目をクリックした後、ObeservableCollection をプログラムでクリアします。

この時点で、ListBox は空ですが、_anchorItem フィールドには、クリックした項目への参照が残っています。プログラムで参照を削除するにはどうすればよいですか?

アイテムへの参照を削除する必要があるのは、アプリケーションでメモリ リークが発生するためです。

4

1 に答える 1

0

私の解決策は、リフレクションを通じて内部メンバーを設定することでした。これがハックであることはわかっていますが、最終的にはメモリの問題がより問題になりました。

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



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