0 Câu hỏi: Cách chính xác nhất để thích ứng hoàn toàn mã này với mẫu MVVM là gì?

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi có một DataGrid với DataGridComboBoxColumn. Mỗi ComboBox phải có cùng một danh sách thả xuống: các giá trị mới được nhập trong ComboBox (ComboBox có thể chỉnh sửa và chấp nhận phím Enter để giới thiệu giá trị mới trong danh sách, nếu không có ở đó), một danh sách một số bình thường được xác định trước các giá trị và một giá trị xám đặc biệt. Người dùng sẽ có thể thêm các hàng mới trong lưới dữ liệu, giống như có thể có trong phiên bản hiện tại.

Các mục trong ComboBox được lấy từ BaseVM và BaseVM và BaseM được đồng bộ hóa một chút, chính xác hơn là BaseVM.ChildVMCollection và BaseM.ChildMCollection. Tôi đã cố gắng tìm một cách tiếp cận đơn giản hơn để đồng bộ hóa hai bộ sưu tập nhưng tôi đã không thành công. Kế thừa ChildVM từ ChildM và BaseVM kế thừa từ BaseM.

Nếu có thể, tôi muốn tôn trọng mẫu MVVM (tôi thấy nó tạo ra tính linh hoạt trong thời gian dài).

Tôi đã xem xét việc sử dụng nhà máy mô hình chế độ xem, nhưng với ví dụ này, tôi đã bỏ qua nó để đơn giản. Tôi chỉ sử dụng các cuộc gọi đến hàm tạo và phôi.

Tôi nghĩ rằng tôi phải có ViewModel cho từng mục trong mỗi hộp tổ hợp bên trong DataGridComboBoxColumn, một cho mỗi chế độ xem (ComboBoxItem) và tôi muốn biết cách triển khai chính xác điều này. Trong phần còn lại, tôi nghĩ rằng tôi có thể triển khai Trình định vị ViewModel để lấy Mô hình cho ViewModel (mặc dù đây chỉ là một diễn viên trong mã được đăng ở trên).

Có thể câu hỏi tiếp tục với điều này:

Trong DataGrid, cách chính xác nhất để đặt riêng ItemSource của từng ComboBox để mỗi ComboBoxItem trong chúng có một ViewModel cụ thể?

Tôi là người mới bắt đầu. Tôi đã đặt một số trang Wikipedia trong danh sách đọc của mình:

  • Tiêm phụ thuộc
  • Đảo ngược quyền kiểm soát
  • Mẫu định vị dịch vụ
  • Nguyên tắc trách nhiệm duy nhất
  • Nguyên tắc phân tách giao diện
  • https://www.oodesign.com/
  • và có thể hơn thế nữa.

Tôi hiện đang trải qua hướng dẫn này . Tôi đã quen với cách WinForms hoạt động nhiều nhất ở phía sau mã.

Tôi đang cố gắng xây dựng lại mã theo repo GitHub này theo cách MVVM chính xác hơn . Đây là phần tiếp theo của bản cập nhật trong câu hỏi này .

Mã hoạt động nhưng không linh hoạt.

    
- 2
  1. có, mỗi mục trong danh sách phải là ViewModel triển khai INotifyPropertyChange
    2019-05-08 16: 05: 00Z
  2. Mỗi ComboBox không nhất thiết cần một chế độ xem riêng. Điều đó có vẻ quá mức. Bạn nên có một ViewModel cho mỗi Điều khiển /Chế độ xem độc lập; đây có thể là một cửa sổ, trang hoặc bất kỳ điều khiển nào được thiết kế độc lập. Có lý do nào mà mỗi combobox không thể có một ObservableCollection tương ứng trong ViewModel chính không?
    2019-05-08 16: 39: 55Z
  3. Mã làm việc "hoàn chỉnh" không thực sự là mục tiêu cho các câu hỏi SO. Có các trang web khác trong mạng trao đổi ngăn xếp xử lý số lần xem mã hóa - họ có các quy tắc riêng. Câu hỏi của bạn rất rộng - bạn có nghĩ rằng nó phù hợp với SO không?
    2019-05-08 16: 40: 13Z
  4. Nếu bạn đang hỏi một câu hỏi về mã của mình, vui lòng đặt một mẫu mã tối thiểu nhưng đủ cho câu hỏi của bạn. Các liên kết ngoài trang web rất được khuyến khích, bởi vì chúng luôn luôn bị chết tại một số điểm.
    2019-05-08 16: 47: 25Z
0 Câu trả lời                              0                         
nguồn đặt đây