У меня есть TabControl, и каждая вкладка содержит TradeBookSetViewModel.Поскольку Tradebook может вырасти довольно большим, пользователь может при необходимости удалить книгу.
В DeleteBook () я просто удаляю TradeBookSetViewModel из наблюдаемой коллекции:
_bookSetViewModels.Remove(oldbook);
Затем я создаюновую пустую книгу в качестве заполнителя и вставьте ее в ту же позицию вкладки.Вкладка по-прежнему выглядит так, как будто она удерживает tradeBook, но на самом деле она пуста.
Для этого я разрешаю новый экземпляр из контейнера Unity и копирую DisplayName из старой книги в пустую книгу.
BookSetViewModel emptyBook = _container.Resolve<BookSetViewModel>();
emptyBook.DisplayName = oldbook.DisplayName;
_bookSetViewModels.Insert(positionOfDisposedTab, emptyBook);
Пока все хорошо.
Но позже я понял, что для emptyBook также требуется свойство Books.Свойство Books относится к типу Dictionary<string, CustomClassItem>
Следовательно, сначала я подумал, что могу сделать то же самое, что и с DisplayName.
emptyBook.Books = oldbook.Books;
Но не значит ли это, что emptyBook будет ссылаться на oldBookи, следовательно, oldBook больше не может быть сборщиком мусора?
Может быть, я просто должен вместо этого клонировать словарь:
emptyBook.Books = book.Books.ToDictionary(entry => entry.Key, entry => entry.Value);
Цель: В концемне нужно, чтобы свойство Books в emptyBook не было нулевым, и все же oldBook могла бы собирать мусор.Есть мысли?