MVVM không bị lỗi thời, nhưng nó đã bị chơi quá nhiều để bắt đầu. Tôi không bao giờ thích nó và nó giữ tôi trong WinForms quá lâu; Không thấy rừng cây, tôi ném em bé ra ngoài bằng nước tắm. Bây giờ tôi có WPF và tôi có ý tưởng không muốn trộn mã với đánh dấu, nhưng tôi thích phong cách Android hơn khi dán đánh dấu ở một nơi và hủy bỏ nó với các đoạn mã trong mã của tôi (mà bạn cũng có thể làm trong WPF, thậm chí mặc dù nó không bao giờ có xu hướng để làm như vậy vì lý do gì).
Bằng cách đó, bạn có được quyền kiểm soát chi tiết hơn và không phải lo lắng về tất cả các xử lý "thay đổi" ở mọi nơi. Tôi cảm thấy điều này thực sự dễ kiểm chứng hơn vì các bài kiểm tra sẽ không bắt được nếu bạn bỏ lỡ một sự kiện "đã thay đổi".
Bạn mất một chút tính "khai báo", dường như là xu hướng ngày nay (ví dụ: nếu hai widget được ánh xạ tới cùng một giá trị, trong MVVM, bạn có thể làm điều đó, trong khi với mã bắt buộc bạn phải đặt cả hai) . Nhưng ngay cả với MVVM, điều đó chỉ hoạt động trong trường hợp đe dọa. Nếu một số tiện ích phải hiển thị nhật ký của một tiện ích khác, thì bạn đã phải viết một trình xử lý khác và một sự kiện "đã trao đổi" khác và do đó cuối cùng bạn phải kéo dài định nghĩa "khai báo" để nói rằng nó là như vậy.
Cập nhật 2015
MVF WPF là (r) tiến hóa cho thời gian của nó. Như WPF. Nhưng cả hai đều bị mụn cóc. Plain WPF đã tích hợp quá nhiều vào nó (cộng với nó được xây dựng trên XML) và là một vấn đề khó giải quyết. (Thực sự, nếu WPF chỉ thực hiện một cách tiếp cận "thư viện" hơn là cách tiếp cận "khung", thì nó có thể đã biến thành một thứ thực sự tuyệt vời và toàn bộ vũ trụ công nghệ có thể hoàn toàn khác bây giờ). Các ý tưởng của MVVM là tuyệt vời, nhưng cố gắng để phù hợp với một MVVM vào WPF là hơi hacky từ 1) C # có thể không thực sự thể hiện nó mà không có nhiều soạn sẵn, và 2) WinForms di tích như popup modal vẫn còn tư tưởng phổ biến nhưng không thể dễ dàng được trình bày trong MVVM. Như vậy tất cả đều bị hút.
Điều đó nói rằng, nó vẫn là tùy chọn thực tế duy nhất trên Windows khi bạn cần độ trong suốt hoặc GPU cho các ứng dụng LOB.
React dĩ nhiên đã khiến MVVM trở nên lỗi thời. Tôi đã thất vọng vì VS2015 không có bộ đếm gốc. Còn bây giờ chúng tôi vẫn đang mắc kẹt sử dụng WPF liệu (đó là OK, nhưng cảm thấy cũ (thực sự cảm thấy giống như cũ như winforms bây giờ), và không có một tấn được xây dựng trong chức năng (feels like một số mát mẻ nhưng dự án bị bỏ rơi) hoặc với-MVVM, mà tại thời điểm này cảm thấy không có nhiều chi phí, vì ngay cả MVVM tốt (góc 1) đã bị phơi bày vì những thiếu sót của nó.
Tôi sẽ tránh MVVM của WPF. Đó là một lớp bổ sung, và không ai quan tâm đến nó nữa.