Мне нужно предотвратить закрытие ViewModel, а также предотвратить отмену редактирования модели. Я попытался переопределить OnClosing в ViewModel, но это событие произошло слишком поздно. Это произошло после того, как редактирование модели было отменено. (Мне кажется странным порядок событий.)
Я нашел старый вопрос и ответ, в котором говорилось об использовании OnViewModelCanceling, однако этот метод не существует как переопределяемый в текущей версии.
Я нашел OnViewModelEvent, но псевдоним не вызывается ни для какого события в моей ViewModel.
Итак, является ли правильным решением переопределить Cancel в ViewModel и вернуть false, или нужно зарегистрироваться для события Canceling в ViewModel?
Я попытался использовать переопределение Cancel, и это работает для простой ViewModel. Однако, если текущая ViewModel имеет вложенные элементы управления с ViewModels, и они тоже возвращают false из Cancel, внешняя ViewModel никогда даже не получит трещину при Cancel. (Что имеет смысл.) Моя проблема здесь в том, что иногда я ДЕЙСТВИТЕЛЬНО хочу соблюдать Cancel, и внешняя ViewModel знает об этом, но вложенные ViewModels не знают. Я знаю, что могу решить эту проблему разными способами, но я хотел бы знать, есть ли лучший способ предотвратить отмену редактирования модели, прежде чем я решу эту новую проблему.
Это может нарушать правило «один вопрос на вопрос», но это очень тесно связано. Мне также нужно знать, как разрешить закрытие ViewModel, но НЕ выполнять EndEdit (или CancelEdit) для его моделей.
Приложение WPF с использованием Catel 3.9