Tôi đang xây dựng một ứng dụng trong python với trình bao bọc python cho WPF và với sự hỗ trợ của DAG. Tôi hiện đang ở thời điểm mà tôi phải quyết định một cách tương tác nhất quán giữa dữ liệu và chế độ xem.
Theo tôi thấy hiện có hai giải pháp rõ ràng.
Đầu tiên là tương tự như cách các ứng dụng Android được cấu trúc. Bạn có một bộ điều khiển thiết lập / điền vào khung nhìn. Vì vậy, bộ điều khiển sở hữu chế độ xem và chỉ đẩy dữ liệu nguyên thủy sẽ được hiển thị. Khung nhìn chỉ là một lớp câm và không biết chuyện gì đang xảy ra và dữ liệu đó đến từ đâu. Và sau đó nếu người dùng tương tác với khung nhìn, nó sẽ gửi các cuộc gọi lại đến bộ điều khiển (nếu nó đã đăng ký).
UserInfoControll.py
userInfoView = UserInfoView()
userInfoView.onGenderChangedCallback = self.onGenderChangedCallback
userInfoView.setUserGenderValue(user.getGender())
UserInfoView.py
def setUserGenderValue(self, gender):
self.userGender = gender
def getView(self):
return ui.Label(self.userGender, onEditCallback=self.onGenderChangedCallback)
Thứ hai là chuyển một mô hình (tham chiếu) cho chế độ xem và để chế độ xem lấy và cập nhật dữ liệu. Khung nhìn bây giờ chứa mô hình và do đó nó có thể cập nhật nó mà không cần bất kỳ cuộc gọi lại bổ sung nào cho bộ điều khiển.
UserInfoViewModel.py
self.gender = 'Male'
UserInfoView.py
def getView(self):
return ui.Label(self.ViewModel().getGender(), onEdited=self.genderEdited)
def genderEdited(self, newValue):
self.ViewModel().setGender(newValue)
Vì vậy, tôi đoán những gì tôi đang hỏi là, tôi có nên truyền dữ liệu rất nguyên thủy và giữ chế độ xem càng chung chung càng tốt, sau đó làm việc với các cuộc gọi lại và thực hiện các chi tiết cụ thể trong bộ điều khiển.
Hoặc tôi nên chuyển toàn bộ mô hình cho chế độ xem và để chế độ xem cập nhật mô hình trực tiếp. Điều này có nghĩa là sẽ có ít mã để gõ.
Tái bút Đừng phán xét mã - nó chỉ để trực quan hóa.
BIÊN TẬP:
Ngoài ra để thêm - ứng dụng này sẽ được viết bằng python hỗ trợ vịt. Điều này có nghĩa là với cách tiếp cận thứ hai, khung nhìn vẫn có thể sử dụng lại được miễn là mô hình đáp ứng giao diện được yêu cầu.