У меня есть окно, которое использует DataTemplates для отображения другого UserControl (представления) в ContentPresenter на основе типа его свойства Content, которое связано со свойством, которое содержит текущую модель представления.Таким образом, изменяя свойство viewmodel с событием, я могу упростить базовую навигацию назад / вперед, которая мне нужна.
При создании новой модели представления передается ссылка на текущую.Возвращение к старому экземпляру viewmodel прекрасно работает для элемента управления CheckBox, но не для созданного мною UserControl, который содержит TextBlock и ComboBox.
Проблема заключается в том, что когда представление, содержащее ComboBox, выгружается,ItemsSource ComboBox обнуляется, что вызывает его очистку его свойств SelectedItem / Text, которые по какой-то причине все еще привязаны к моей модели представления - таким образом, очищая данные, которые он хранит.Я не знаю, как вручную отсоединить их в подходящее время.(Опять же, CheckBox работает просто отлично.)
Я читал, что у других пользователей возникла точно такая же проблема.Для них изменение порядка объявления привязок ItemsSource и SelectedItem / Text таким образом, чтобы атрибуты для последнего были помещены до того, как первый решит проблему.Однако в моем случае это не так.Другие также исправили проблему, игнорируя нулевые / пустые значения, но в моем случае это не сработает.
Я мог бы обойти эту проблему, скопировав интересные данные в отдельный объект и перезагрузив его из этого., но мне нужно было бы добавить код, чтобы инициировать перезагрузку data = больше кода связи для хранения.
Я также мог бы избежать использования DataTemplates и вручную добавлять UserControls в codebehind, что позволило бы мне разбивать данныепривязка перед удалением UserControl.Но это идет вразрез с MVVM.
Я не выше изменяю свой очень не MVVM UserControl для обработки любых событий в ComboBox, который он содержит, чтобы обойти эту проблему.
ОБНОВЛЕНИЕ:
Я немного сузил вопрос.Я реорганизовал код так, чтобы он вручную создавал и добавлял представление UserControl в зависимости от того, какая модель представления была установлена.Эта проблема теперь возникает только тогда, когда я установил для DataContext представления UserControl значение NULL.Если я просто заменю представление, не удаляя ссылку, оно больше не стирает рассматриваемые значения.Это полезный обходной путь, или он создает такие проблемы, как утечки памяти?