WPF için bir python sarıcı ve DAG desteği ile python bir uygulama inşa ediyorum. Şu anda veri ve görünüm arasında tutarlı bir etkileşim şekline karar vermem gereken bir noktadayım.
Gördüğüm kadarıyla şu anda iki belirgin çözüm var.
Birincisi Android Uygulamalarının nasıl yapılandırıldığına benzer. Görünümü ayarlayan / dolduran bir denetleyiciniz var. Böylece denetleyici görünüme sahiptir ve yalnızca görüntülenecek ilkel verileri iter. Görünüm sadece aptal bir katman ve ne olduğu ve bu verinin nereden geldiği hakkında hiçbir fikri yok. Ve sonra kullanıcı görünümle etkileşime girerse, denetleyiciye geri çağrılar gönderir (kayıtlıysa).
UserInfoController.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)
İkincisi , görünüme (başvurusu) bir model geçirerek görünümün verileri almasına ve güncellemesine izin vermektir. Görünüm şimdi modeli içerir ve bu nedenle denetleyiciye herhangi bir ek geri arama yapmadan güncelleyebilir.
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)
Bu yüzden sorduğum şey, çok ilkel verileri geçip görünümü olabildiğince genel tutmalı mıyım, sonra geri aramalarla çalışmalı ve denetleyicideki iş özelliklerini yapmalıyım.
Veya tüm modeli görünüme geçirmeli ve görünümün modeli doğrudan güncellemesine izin vermeliyim. Bu, yazmak için daha az kod olacağı anlamına gelir.
PS. Kodu yargılamayın - sadece görselleştirme içindir.
DÜZENLE:
Ayrıca eklemek için - bu uygulama ducktyping destekleyen python yazılacak. Bu, ikinci yaklaşımla, gerekli arabirimi karşılayan model olduğu sürece görünümün yeniden kullanılabilir olduğu anlamına gelir.