MVVM modası geçmiş değil, ancak başlamak için fazla abartılıyor. Hiç hoşuma gitmedi ve beni WinForms'da çok uzun süre tuttu; ağaçlar için ormanı göremediğimde bebeği banyo suyuyla dışarı attım. Şimdi WPF alıyorum ve kodu biçimlendirme ile karıştırmak istememe fikrini alıyorum, ancak biçimlendirmeyi tek bir yere yapıştırma ve kodumdaki dökümlerle (hatta WPF'de de yapabilirsiniz) Android stilini tercih ediyorum. her ne sebeple olursa olsun bunu yapmak hiç moda olmadı).
Bu şekilde daha hassas kontrol elde edersiniz ve her yerdeki "değişmiş" taşıma konusunda endişelenmenize gerek kalmaz. Bunun aslında daha test edilebilir olduğunu düşünüyorum çünkü bir "değişmiş" olayı kaçırırsanız testler her zaman yakalanmayacaktır.
Bu günlerde bir eğilim gibi görünen biraz "deklaratif" -ness kaybedersiniz (örneğin, iki widget aynı değere eşlenirse, MVVM'de bunu yapabilirsiniz, ancak zorunlu kodla her ikisini de ayrı ayrı ayarlamanız gerekir) . Ancak MVVM ile bile, bu sadece menial durumda çalışır. Bazı widget'ın başka bir widget'ın günlüğünü göstermesi gerekiyorsa, başka bir işleyici ve başka bir "değişmiş" olay yazmanız gerekir ve böylece böyle olduğunu söylemek için "bildirim" tanımını genişletmek zorunda kalırsınız.
2015 güncellemesi
WPF MVVM, zamanı için evrimseldi. WPF gibi. Ama ikisinin de siğilleri vardı. Düz WPF çok fazla içine yerleştirilmişti (artı XML üzerine inşa edilmişti) ve başa çıkmak için bir tür acıydı. (Gerçekten, eğer WPF bir "çerçeve" yaklaşımından çok daha "kütüphane" yaklaşımını benimsemiş olsaydı, bu gerçekten harika şeyler haline gelmiş olabilir ve tüm teknoloji evreni artık tamamen farklı olabilirdi). Fikir MVVM harikaydı ama WPF içine MVVM uydurmaya çalışan 1) C # gerçekten Demirbaş bir sürü olmadan bunu ifade edemedikleri biraz hacky oldu ve modal pop-up gibi 2) WinForms emanetler hala ideolojik yaygın ama yapamadım MVVM'de kolayca temsil edilebilir. Böylece her şey emildi.
Bununla birlikte, LOB uygulamaları için şeffaflığa veya GPU'ya ihtiyaç duyduğunuzda hala Windows'daki tek gerçekçi seçenek.
Tepki elbette MVVM'yi eskimiş hale getirdi. VS2015'in yerel bir sayacı olmadığı için hayal kırıklığına uğradım. Şimdilik hala ham WPF kullanmaya devam ediyoruz (ki bu iyi, ama eski hissediyor (gerçekten şimdi winformlar kadar eski hissediyor ) ve bir ton yerleşik işlevsellik yok (harika ama terk edilmiş bir proje gibi hissediyor) veya bu noktada hiçbir şey için çok fazla yük gibi görünen MVVM ile, iyi MVVM (açısal 1) bile eksikliklerinden dolayı ortaya çıkmıştır.
WPF MVVM'den kaçınırım. Ekstra bir katman ve artık kimse umursamıyor.