Trong mẫu MVVM, có chính xác một ViewModel cho mỗi lần xem hoặc có chính xác một ViewModel cho mỗi Mô hình không?Chế độ xemMô hình cho mỗi Chế độ xem hoặc mỗi Mô hình?
Trả lời
Về mặt lý thuyết, các mối quan hệ là
Xem n - 1 ViewModel n - 1 Model
tôi biết, rất nhiều người sẽ cắn và đánh tôi, nhưng ... Trong thực tế ...
Rất thường xuyên, trong các ứng dụng kinh doanh, có lớp truy cập dữ liệu (DAL). Và rất thường xuyên các thực thể từ DAL là Mô hình của bạn. Đôi khi bạn nên bọc các thực thể đó với các lớp bổ sung để cung cấp chức năng mở rộng hoặc có thể một số thuộc tính bổ sung. Có thể bạn có Mô hình của riêng mình ...
Chế độ xem và Chế độ xem (trong thực tế) thường có mối quan hệ 1 đến 1. Một cái gì đó giống như - mỗi màn hình (hoặc một phần của màn hình) thực sự là một View và ViewModel được ghép nối. Tôi nghĩ rằng thường chỉ là một cái gì đó giống như - Xem là lớp giao diện người dùng và ViewModel là mã phía sau cấp. Xem chỉ là tệp XAML - lớp trình bày. Và (thực hành tốt nhất) mọi thứ khác phải ở trong ViewModel - tất cả các quá trình nhận dữ liệu, tất cả các lệnh, tất cả các trường có thể thay đổi, vv. Bằng cách này, bạn thường có thể kiểm tra ViewModel (với thử nghiệm đơn vị). Một ViewModel có thể có một vài Views (trong thực tế) thường chỉ khi bạn đã chia sẻ ViewModels, ví dụ, DesktopApplication (WPF), ứng dụng Web (Silverlight) và Windows Phone. Một cái gì đó như thế này. Nhưng thường - một ViewModel - một Chế độ xem. Nếu bạn có nhiều Chế độ xem cho một Chế độ xem - thường bạn sẽ gặp nhiều vấn đề về bảo trì ...
Có một mô hình cho mỗi chế độ xem và một chế độ xem cho mỗi chế độ xem, theo hướng khác, mọi thứ đều là n.
Xem n - 1 ViewModel n - 1 Model
Có thể sử dụng nhiều chế độ xem cho cùng một kiểu xem và cũng có thể sử dụng cho nhiều chế độ xem khác nhau các mô hình cho cùng một chế độ xem.
Nhiều-xem để một ViewModel:
Ví dụ trong một sắp xếp tổng thể-chi tiết bạn có thể đặt mô hình điểm của bạn thành một ObservableCollection và trình bày chúng trong một ListBox mà bạn liên kết các mục hiển thị đối với tài sản Tiêu đề của ViewModel. ListBox hiển thị một chế độ xem các kiểu xem của bạn. Sau đó, ListBox.SelectedItem được ràng buộc với một khung nhìn khác nhau trình bày chi tiết của mô hình được chọn.
One-Xem nhiều-ViewModels:
Bắt đầu với một tập hợp các quan điểm mô hình mà tất cả các phần tên tài sản chung bạn có thể trình bày tất cả các mô hình điểm trong quan điểm tương tự. Ví dụ, bạn có thể có một mô hình xem đơn giản bao gồm một thuộc tính Title và một thuộc tính ModelValue. Trong tất cả các mô hình khung, thuộc tính Title sẽ là chuỗi nhưng mỗi mô hình khung nhìn khác nhau có thể có một kiểu dữ liệu khác nhau cho thuộc tính ModelValue. StringViewModel sẽ có một chuỗi ModelValue và DoubleViewModel sẽ có một ModelValue kép. Việc trình bày các mô hình khung nhìn khác nhau có thể chia sẻ cùng một khung nhìn bao gồm một TextBlock để trình bày Tiêu đề và một TextBox để chỉnh sửa ModelValue. Điều này sẽ làm việc cho bất kỳ loại có thể chỉnh sửa trong một TextBox.
Bằng cách trộn và kết hợp Chế độ xem và Chế độ xem, bạn có thể thu được lợi thế lớn từ việc tách Chế độ xem và Chế độ xem.
- 1. ObservableObject hoặc INotifyPropertyThay đổi trên Chế độ xemMô hình
- 2. Quy ước đặt tên và mô hình hóa cho Mô hình và Chế độ xemMô hình trong MVVM
- 3. Giao diện người dùng Threading với Chế độ xemMô hình
- 4. Mô hình chế độ xem chung?
- 5. Chế độ xem chương trình mã màu cho mỗi tệp
- 6. Trình xem chế độ xem mô hình, cách chuyển đối tượng giữa chế độ xem?
- 7. Tệp JavaScript cho mỗi chế độ xem trong Rails
- 8. Chế độ xem được ủy quyền hoặc Chế độ xem cấu hình được ủy quyền?
- 9. nhận dữ liệu mô hình cho chế độ xem backbone.js
- 10. Trình xem chế độ xem mô hình là gì?
- 11. MVC: Trình điều khiển chế độ xem mô hình - Chế độ xem có gọi là Mô hình không?
- 12. Tìm Chế độ xem Backbone.js nếu bạn biết Mô hình?
- 13. Định vị chế độ xem dưới hai chế độ xem (hoặc chế độ xem thấp nhất)
- 14. gọi phương thức trong mô hình từ chế độ xem
- 15. chế độ xem backbonejs không có mô hình
- 16. MVC: các mô hình tương tác với chế độ xem?
- 17. Ajax.ActionLink đăng toàn bộ mô hình từ chế độ xem?
- 18. Chế độ xem hình ảnh Android * FIT_TOP *
- 19. Sự kiện WPF ràng buộc từ Xem sang Chế độ xemMô hình?
- 20. Vim: chế độ xem hình ảnh ngược
- 21. Mô hình chất béo, Chế độ xem gầy và Chế độ xem câm, cách tiếp cận MVVM tốt nhất?
- 22. Hình ảnh nhiều chế độ xem
- 23. ASP.NET MVC: Bạn lắp ráp mô hình xem ở đâu cho chế độ xem?
- 24. Bất kỳ cách nào định cấu hình để định cấu hình chế độ xem chế độ xem mvc chế độ xem trực quan
- 25. Đặt hình nền/chế độ xem thành chế độ xem trực tiếp của máy ảnh?
- 26. Chuyển hình ảnh từ một chế độ xem sang một chế độ xem khác
- 27. Chế độ xem hiển thị ở chế độ xem cuộn trên màn hình
- 28. chuyển đổi chế độ xem của hai chế độ xem trong hình động khối lập phương
- 29. Dữ liệu cũ trong Mô hình Chế độ xem MVVM với phụ thuộc tiêm
- 30. Chế độ xem cuộn cho chế độ xem văn bản trong android