MVVM не застарів, але для початку це було переграно. Мені це ніколи не подобалось, і він тримав мене в WinForms занадто довго; не бачачи лісу за деревами, я викинув дитину з ванною. Зараз я отримую WPF, і мені здається, що я не хочу змішувати код з розміткою, але я віддаю перевагу стилю Android вклеювати розмітку в одне місце і перенаправляти її з кастрами в моєму коді (що ви також можете робити в WPF, навіть хоча це ніколи не було модним робити це з будь-якої причини).
Таким чином ви отримуєте більш тонкий контроль і не потрібно турбуватися про всі "змінені" поводження скрізь. Я відчуваю, що це насправді більш перевірено, тому що тести не завжди можуть його наздогнати, якщо пропустити подію, що змінилася.
Ви втрачаєте трохи "декларативної" -ness, що, здається, є тенденцією в наші дні (наприклад, якщо два віджети відображені на одне значення, в MVVM ви можете просто це зробити, тоді як з імперативним кодом ви повинні встановити обидва окремо) . Але навіть з MVVM це працює лише у найголовнішому випадку. Якщо якийсь віджет повинен відображати журнал іншого віджета, вам потрібно написати інший обробник та іншу подію "в зміні", і, таким чином, вам доведеться розтягнути визначення "декларативного", щоб сказати, що це так.
Оновлення 2015 року
WPF MVVM був (r) еволюційним для свого часу. Як було WPF. Але вони обоє мали бородавки. Звичайний WPF був занадто багато вбудований у нього (плюс він був побудований на XML), і це було якоюсь болем. (Дійсно, якби WPF щойно застосував більш "бібліотечний" підхід, а не "рамковий" підхід, він міг би перетворитися на якісь справді класні речі, і вся технологічна всесвіт може бути зовсім іншою). Ідея про MVVM була велика, але намагається підігнати MVVM в WPF був кілька Hacky , оскільки 1) C # не міг висловити це без великої кількості шаблонного, і 2) WinForms реліквії , такі як модальні спливаючі вікна були всі ще ідеологічно поширені , але не міг бути легко представленим у MVVM. Таким чином все це смоктало.
Однак, це все ще єдиний реалістичний варіант для Windows, коли для програм LOB потрібна прозорість або графічний процесор.
React, звичайно, зробив MVVM застарілим. Я був розчарований, що VS2015 не мав місцевого лічильника цього. На даний момент ми все ще затримуємося від використання сирого WPF (це нормально, але відчуває себе старим (насправді відчуває себе таким же старим, як зараз winforms), і не має тони вбудованої функціональності (відчуває себе як класний, але покинутий проект) або з-MVVM, який у цей момент відчуває себе начебто без витрат, оскільки навіть хороший MVVM (кутовий 1) виявив свої недоліки.
Я б уникнув WPF MVVM. Це зайвий шар, і про це вже ніхто не піклується.