MVVM ist nicht veraltet, wurde aber zu Beginn überspielt. Ich mochte es nie und es hielt mich zu lange in WinForms; Ich konnte den Wald vor lauter Bäumen nicht sehen und warf das Baby mit dem Badewasser hinaus. Ich bekomme jetzt WPF und komme auf die Idee, Code nicht mit Markup mischen zu wollen, aber ich bevorzuge den Android - Stil, das Markup an einer Stelle festzuhalten und es mit Casts in meinem Code zu dereferenzieren (was Sie auch in WPF tun können, sogar obwohl es aus irgendeinem Grund nie trendy wurde, dies zu tun).
Auf diese Weise erhalten Sie eine feinkörnigere Kontrolle und müssen sich nicht um das "veränderte" Handling überall kümmern. Ich halte dies für testbarer, da Tests dies nicht immer nachvollziehen können, wenn Sie ein "verändertes" Ereignis verpassen.
Sie verlieren ein wenig an "deklarativer" Qualität, was heutzutage ein Trend zu sein scheint (z. B. wenn zwei Widgets demselben Wert zugeordnet sind, können Sie dies in MVVM einfach tun, während Sie bei imperativem Code beide einzeln festlegen müssen). . Aber selbst mit MVVM funktioniert das nur im einfachen Fall. Wenn in einem Widget das Protokoll eines anderen Widgets angezeigt werden muss, müssen Sie einen anderen Handler und ein anderes "onchanged" -Ereignis schreiben und die Definition von "deklarativ" erweitern, um dies zu bestätigen.
Update 2015
WPF MVVM war für seine Zeit (r) evolutionär. Wie war WPF. Aber beide hatten ihre Warzen. In normalem WPF war zu viel (und es wurde auf XML aufgebaut) eingebaut, und es war eine Art Schmerz, mit dem man sich befassen musste. (Wenn WPF nur einen "Bibliotheks" -Ansatz anstatt eines "Framework" -Ansatzes gewählt hätte, hätte es sich in ein paar wirklich coole Sachen verwandeln können, und das gesamte Tech-Universum könnte jetzt völlig anders sein.) Die Idee von MVVM war großartig, aber der Versuch, eine MVVM in WPF einzubauen, war etwas hackig, da 1) C # es ohne viel Boilerplate nicht wirklich ausdrücken konnte und 2) WinForms-Relikte wie modale Popups immer noch ideologisch weit verbreitet waren, dies aber nicht konnten leicht in MVVM vertreten sein. So saugte alles.
Das heißt, es ist immer noch die einzige realistische Option unter Windows, wenn Sie Transparenz oder GPU für LOB-Apps benötigen.
Die Reaktion hat MVVM natürlich überholt. Ich war enttäuscht, dass VS2015 keinen nativen Zähler dafür hatte. Für den Moment stecken wir immer noch in Raw-WPF (das ist in Ordnung, fühlt sich aber alt an (fühlt sich jetzt wirklich genauso alt an wie Winforms) und verfügt nicht über eine Menge eingebauter Funktionen (fühlt sich an wie ein cooles, aber verlassenes Projekt). oder mit-MVVM, was sich an dieser Stelle wie viel Aufwand für nichts anfühlt, da selbst gutes MVVM (Winkel 1) für seine Mängel entlarvt wurde.
Ich würde WPF MVVM vermeiden. Es ist eine zusätzliche Schicht, und niemand kümmert sich mehr darum.