У меня есть основной метод, который имеет этот код:
List<MyType> myList = openDialog();
Вызов openDialog, который открывает диалоговое окно, которое возвращает список с выбранными элементами, диалоговое окно для выбора элементов.
private List<MyType> openDialog()
{
MyView myView = new MyView();
MyViewModel myViewModel = new MyViewModel();
myView.DataContext = myViewModel;
myView.ShowDialog();
return myViewModel.Result;
}
myViewModel.Result - это коллекция, в которой есть selectedItems таблицы данных в представлении.
Мой вопрос заключается в том, как я возвращаю свойство Result ViewModel, я не уверен, что myViewModelбудет вспоминаться сборщиком мусора или нет, потому что он все еще имеет ссылку на него.
Чтобы избежать этого, я делаю это:
private List<MyType> openDialog()
{
MyView myView = new MyView();
MyViewModel myViewModel = new MyViewModel();
myView.DataContext = myViewModel;
myView.ShowDialog();
return new List<MyType>(myViewModel.Result);
}
В ответ я создаюновый список, чтобы избежать ссылки на свойство Result и обеспечить повторный выбор объекта myViewModel, но я хотел бы знать, есть ли способ избежать создания нового списка.