2012-02-23 32 views

Trả lời

19

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ì ...

4

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.

6

Xem n - 1 ViewModel n - 1 Model

4

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.

Các vấn đề liên quan