Я использую WPF с шаблоном модель-вид-вид-модель. У меня есть ResultsView и ResultsViewModel, которые связаны следующим образом:
<DataTemplate DataType="{x:Type VM:ResultsViewModel}">
<VW:ResultsView/>
</DataTemplate>
В моем главном окне у меня есть какая-то постраничная настройка, в которой свойство MainContent хранит текущую страницу (экземпляр ViewModel).
Я создаю такую страницу
MainContent = new ResultsViewModel();
ResultsView основан на UserControl, у него также есть обработчик для события Loaded, который выполняет некоторые функции инициализации пользовательского интерфейса.
Все отлично работает, пока пользователь перемещается между разными страницами.
Но если пользователь открывает окно ResultsView два раза подряд, конструктор ResultsView будет не , вызванным во второй раз, а также событие Loaded не вызывается. Кажется, что теперь у меня есть тот же старый экземпляр ResultsView, присоединенный к новому ResultsViewModel ()!
Почему WPF не создает новый View каждый раз, когда я создаю новую ViewModel? Есть ли способ заставить WPF отказаться от старого представления, если старая модель просмотра уничтожена?