Исключение NullReferenceException, генерируемое в NotifyPropertyChanged, при переключении видов в процессе редактирования - PullRequest
0 голосов
/ 06 октября 2010

У меня есть ряд представлений, которые должны отображаться в зависимости от выбранного в данный момент элемента дерева в родительском представлении. Эти представления создаются и регистрируются в регионе во время метода инициализации родительского представления и корректно деактивируются / активируются, что дает эффект замены / правильного представления. Эти представления имеют один базовый viewmodel в качестве своего datacontext, который содержит объекты данных, поддерживающие INotifyPropertyChanged.

Это решение работает, если в дочернем представлении в данный момент нет незавершенных правок, но если в нем есть незавершенное редактирование (т. Е. Пользователь изменил содержание описания, но не щелкнул текст). поле), и это представление деактивируется (т. е. при щелчке по другому элементу дерева в родительском представлении, что приводит к деактивации), создается исключение NullReferenceException в NotifyPropertyChanged () базового объекта данных, присоединенного к теперь деактивированному вид.

То, что, кажется, происходит, это:

  • Редактирование запускается пользователем в дочернем представлении
  • Пользователь щелкает элемент в дереве в родительском представлении
  • Контроллер фиксирует изменение выбранного элемента в дереве
    • Текущее дочернее представление деактивировано
    • Новый вид активирован
  • Изменение от редактирования происходит с базовым объектом данных (вызывается метод set)
  • В результате этого изменения объектом данных генерируется событие уведомления об изменении
  • Выдается исключение нулевой ссылки.

Предположительно, это событие уведомления об изменении отправляется в теперь деактивированное представление, но представление не является нулевым.

1 Ответ

1 голос
/ 06 октября 2010

Я сам не пробовал, но я считаю, что одним из решений было прослушивание события деактивации представления с использованием IActiveAware и отмена любого редактирования.

Посмотрите, поможет ли эта ссылка .

...