Старайтесь не очищать списки при смене вкладок, я не думаю, что WPF попытается нарисовать список, если он не отображается.Когда мне нужно, чтобы listbox / itemscontrol отображал коллекцию объектов, я делаю это:
//have all the usual usings and
using System.ComponentModel
using System.Collections.ObjectModel
class Bar : INotifyPropertyChanged
{
//make your properties setters call PropertyChanged
}
class Bars : ObservableCollection<Bar>
{
}
, затем устанавливаю в вашем списке ItemsSource
в качестве экземпляра Bars
и использую шаблон данных для отображениякаждый Bar
.Это означает, что вам больше никогда не придется устанавливать ItemsSource
(потому что ObservableCollection
автоматически сообщит списку обновляться, когда что-то изменится), что, как я предполагаю, является причиной утечки.Не повторяя ItemsSource
программа будет вероятно более эффективной, но это не гарантия :)
, если вы впадаете в отчаяние, Red-Gate делает бесплатный .net рефлектор такВы можете взглянуть на то, что на самом деле делает ваш ListBox.
Другая проблема может заключаться в том, что список не виртуализируется должным образом, но я помню, что ListBoxes виртуализируются, но для этого вам понадобится второе мнение.