У меня есть ряд представлений, которые должны отображаться в зависимости от выбранного в данный момент элемента дерева в родительском представлении. Эти представления создаются и регистрируются в регионе во время метода инициализации родительского представления и корректно деактивируются / активируются, что дает эффект замены / правильного представления. Эти представления имеют один базовый viewmodel в качестве своего datacontext, который содержит объекты данных, поддерживающие INotifyPropertyChanged.
Это решение работает, если в дочернем представлении в данный момент нет незавершенных правок, но если в нем есть незавершенное редактирование (т. Е. Пользователь изменил содержание описания, но не щелкнул текст). поле), и это представление деактивируется (т. е. при щелчке по другому элементу дерева в родительском представлении, что приводит к деактивации), создается исключение NullReferenceException в NotifyPropertyChanged () базового объекта данных, присоединенного к теперь деактивированному вид.
То, что, кажется, происходит, это:
- Редактирование запускается пользователем в дочернем представлении
- Пользователь щелкает элемент в дереве в родительском представлении
- Контроллер фиксирует изменение выбранного элемента в дереве
- Текущее дочернее представление деактивировано
- Новый вид активирован
- Изменение от редактирования происходит с базовым объектом данных (вызывается метод set)
- В результате этого изменения объектом данных генерируется событие уведомления об изменении
- Выдается исключение нулевой ссылки.
Предположительно, это событие уведомления об изменении отправляется в теперь деактивированное представление, но представление не является нулевым.