Я могу вспомнить два обстоятельства, при которых я бы не использовал MVVM.
Во-первых, если приложение достаточно простое, мне не нужно разделять модель представления и модель. Не слишком ли это портит мой класс, если я реализую INotifyPropertyChanged
и RelayCommand
или два? Если нет, я мог бы пропустить шаг создания отдельного класса. Или я могу просто захотеть, чтобы модель представления смоделировала функциональный пользовательский интерфейс и беспокоилась о реализации реальных внутренних функций, если клиент кусается.
Другой случай, когда мне нужна достаточно высокая производительность, и в представлении достаточно объектов, и мне нужно написать код, который напрямую манипулирует объектами WPF. Я на самом деле не тестировал его, чтобы быть уверенным, но я уверен, что рисование 1000 движущихся частиц путем итерации по массиву, содержащему их, и непосредственное изменение их TranslateTransform
(если это действительно самый быстрый способ их позиционирования) быть быстрее, чем изменять их базовые свойства и делать привязки.