MVVM ไม่ล้าสมัย แต่มัน overplayed เริ่มต้นด้วย ฉันไม่เคยชอบมันและมันทำให้ฉันอยู่ใน WinForms นานเกินไป ฉันไม่เห็นป่าสำหรับต้นไม้ฉันโยนลูกน้อยออกไปพร้อมกับอาบน้ำ ตอนนี้ฉันได้ WPF มาแล้วและฉันไม่ได้คิดที่จะผสมโค้ดกับมาร์กอัป แต่ฉันชอบสไตล์ Android ในการผสานมาร์กอัปในที่เดียวและยกเลิกการลงมือด้วยการปลดเปลื้องในรหัสของฉัน (ซึ่งคุณสามารถทำได้ใน WPF แม้ว่ามันจะไม่ได้อินเทรนด์ที่จะทำเช่นนั้นด้วยเหตุผลใดก็ตาม)
ด้วยวิธีนี้คุณจะได้รับการควบคุมที่ละเอียดยิ่งขึ้นและไม่ต้องกังวลกับการจัดการ "ที่เปลี่ยนแปลง" ทุกที่ ฉันรู้สึกว่านี่เป็นจริงได้มากขึ้นเพราะการทดสอบจะไม่จับถ้าคุณพลาดเหตุการณ์ "เปลี่ยนแปลง"
คุณสูญเสียบิตของ "declarative" --ness ซึ่งดูเหมือนว่าเป็นแนวโน้มในวันนี้ (เช่นหากวิดเจ็ตสองรายการถูกแมปกับค่าเดียวกันใน MVVM คุณสามารถทำได้ในขณะที่โค้ดที่จำเป็นคุณต้องตั้งค่าทั้งสองอย่าง) . แต่ถึงแม้จะมี MVVM นั่นก็ใช้ได้กับกรณีที่ไม่เป็นทางการเท่านั้น หากวิดเจ็ตบางตัวต้องแสดงบันทึกของวิดเจ็ตอื่นคุณจะต้องเขียนตัวจัดการอื่นและเหตุการณ์ "onchanged" อีกอันและคุณจะต้องขยายนิยามของคำว่า "declarative" เพื่อบอกว่ามันเป็นเช่นนั้น
อัปเดตปี 2015
WPF MVVM เป็นวิวัฒนาการในเวลานั้น เช่นเดียวกับ WPF แต่พวกเขาทั้งคู่มีหูด WPF ธรรมดามีอยู่ภายในมากเกินไป (รวมถึงมันถูกสร้างบน XML) และเป็นความเจ็บปวดที่จะจัดการ (จริง ๆ แล้วถ้า WPF ใช้วิธี "ไลบรารี่" มากกว่าวิธี "เฟรมเวิร์ก" มันอาจกลายเป็นสิ่งที่เจ๋งจริงๆและจักรวาลเทคโนโลยีทั้งหมดอาจแตกต่างอย่างสิ้นเชิงตอนนี้) ความคิดของ MVVM เป็นดี แต่พยายามที่จะพอดีกับ MVVM เข้า WPF ค่อนข้าง hacky ตั้งแต่วันที่ 1) C # ไม่สามารถจริงๆแสดงมันไม่มากสำเร็จรูปและ 2) WinForms พระธาตุเช่นป๊อปอัปกิริยาก็ยังคงแพร่หลายอุดมการณ์ แต่ไม่สามารถ ถูกแสดงอย่างง่ายดายใน MVVM ดังนั้นมันจึงถูกดูดทั้งหมด
ดังกล่าวยังคงเป็นตัวเลือกที่เหมือนจริงบน Windows เมื่อคุณต้องการความโปร่งใสหรือ GPU สำหรับแอพ LOB
แน่นอนว่า React ทำให้ MVVM ล้าสมัยแล้ว ฉันผิดหวังที่ VS2015 ไม่มีเคาน์เตอร์แบบดั้งเดิม สำหรับตอนนี้เรายังคงใช้ WPF แบบดิบ (ซึ่งก็โอเค แต่ให้ความรู้สึกเก่า (ให้ความรู้สึกเหมือนเก่ากับ winforms ในขณะนี้) และไม่มีฟังก์ชั่นในตัวมากมาย (ให้ความรู้สึกเหมือนโครงการเจ๋ง ๆ หรือกับ -VVVM ซึ่ง ณ จุดนี้รู้สึกเหมือนไม่มีค่าใช้จ่ายมากนักเนื่องจากแม้แต่MVVM ที่ดี (เชิงมุม 1) ก็ยังมีข้อบกพร่องอยู่
ฉันจะหลีกเลี่ยง WPF MVVM มันเป็นเลเยอร์พิเศษและไม่มีใครสนใจอีกต่อไป