MM>Контролы WPF взаимодействуют с коллекцией не напрямую, а используя внутренний механизм CollectionView, которым манипулируют достаточно хитрожопо (пардон). Скорее всего именно из-за этого связь с коллекцией все еще остается, в то время, как в контроле ссылки уже нет.
Замечательно, значит после каждого соединения с ItemControl в памяти навсегда зависает CollectionView. Это ж глюк!
MM>Варианты решения:
MM>
MM>Использовать ObservableCollection только для UI, а в потоке манипулировать обычным списком. Перед показом окна, перекладываем список в коллекцию. После показа окна, делаем наоборот.
MM>Модифицировать коллекцию через Dispatcher.
MM>Перейти на .Net Framework 4.5, в которой обещали разрешить модификацию коллекций в не UI-потоках.
MM>
Примерно по первому варианту решил, только с точностью до наоборот. Написал потомка ListBox, который правильно подписывается и отписывается от коллекции и следит за её обновлением, а базовому ListBox отдает обычную коллекцию IEnumerable.