tôi đồng ý với tất cả các câu trả lời khác (những người bởi Kieren và Groky) nhưng cảm thấy họ không đề cập đến việc xem xét rất quan trọng trong quyết định này.
Bạn chỉ nên tạo mô hình xem nếu có điều gì đó cụ thể về chế độ xem của những gì bạn đang làm. Nếu tất cả những gì bạn đang làm là ràng buộc với dữ liệu và gọi các lệnh tự nhiên thuộc về mô hình của bạn, không có lý do gì để tạo ra một mô hình khung nhìn.
Ví dụ, giả sử:
- đối tượng Player của bạn có một tài sản Name, một tài sản Rank, phương pháp thúc đẩy() một, và một phương pháp Delete().
- Chế độ xem của bạn là một chế độ đơn giản cho phép bạn chỉnh sửa Tên và Xếp hạng của bất kỳ trình phát nào và cũng có các nút để quảng bá và xóa người chơi.
Trong trường hợp này, việc thêm mô hình xem giữa chế độ xem và mô hình của bạn là vô nghĩa. một cái nhìn như vậy có thể gắn trực tiếp vào mô hình:
- Bind TextBox.Text đến thuộc tính Name
- Bind Slider.Value đến tài sản Rank
- Bind nút Đẩy mạnh các phương pháp thúc đẩy()
- Liên kết nút Xóa với phương thức Xóa()
Lưu ý rằng thay vì ràng buộc nút Xóa thành phương thức Delete() bạn có thể đặt Command thành ApplicationCommands.Delete và sử dụng CommandBinding để gọi Phương thức Delete().
Điểm của tôi ở đây là trong hầu hết các trường hợp, nếu mô hình của bạn được thiết kế tốt, sẽ không cần phải chèn đối tượng kiểu xem. Mô hình khung nhìn chỉ thực sự cần thiết khi trạng thái xem cụ thể cần được theo dõi (như "Trình phát hiện tại"), chuyển đổi quá phức tạp để được xử lý bằng ràng buộc đơn giản hoặc bạn cần các lệnh ảnh hưởng đến nhiều đối tượng mô hình khác nhau và/hoặc chế độ xem các thuộc tính mô hình cùng một lúc. Theo kinh nghiệm của tôi, nếu mô hình được thiết kế chính xác thì chỉ có khoảng 50% so với tất cả các lượt xem thực sự cần một mô hình xem và trong trường hợp các mục trong một danh sách thì nó giống với 20%.
Ví dụ về thời điểm bạn có thể sử dụng mô hình chế độ xem cho một mục trong danh sách là khi bạn cần gắn cờ "được chọn" riêng biệt, một phần của chế độ xem chứ không phải của mô hình của bạn và chức năng cơ bản trong ListBox không đủ.
Nguồn
2010-07-17 04:58:33
+1 cho "nếu hoạt động tốt thì đúng (ngay cả khi vi phạm nguyên tắc)" – andyp
Không đùa. 1 từ tôi nữa. –
Tôi nhận được một lol từ "nếu nó hoạt động đúng", nhưng tôi đã nhìn thấy rất nhiều thứ mà làm việc và cho đến nay từ chính xác họ làm cho tôi muốn ném. :) – CindyH