WPFのpythonラッパーとDAGサポートを使用して、pythonでアプリケーションを構築しています。私は現在、データとビューの間でやり取りする一貫した方法を決定する必要があるところにいます。
私が見る限り、現在2つの明白な解決策があります。
1つ目は、Androidアプリケーションの構造に似ています。ビューを設定/移入するコントローラーがあります。したがって、コントローラーはビューを所有し、表示されるプリミティブデータのみをプッシュします。ビューは単なるダム層であり、何が起こっているのか、そのデータがどこから来ているのかはわかりません。そして、ユーザーがビューを操作すると、コントローラーにコールバックが送信されます(登録されている場合)。
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)
2つ目は、モデルの(参照)をビューに渡し、ビューにデータを取得および更新させることです。ビューにはモデルが含まれているため、コントローラへの追加のコールバックなしでモデルを更新できます。
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)
だから私が求めているのは、非常に原始的なデータを渡してビューをできるだけ一般的なものにして、コールバックを操作してコントローラーでビジネス固有の処理を行うべきかどうかです。
または、モデル全体をビューに渡して、ビューでモデルを直接更新できるようにする必要があります。つまり、入力するコードが少なくなります。
PS。コードを判断しないでください-それは単に視覚化のためです。
編集:
また追加する -このアプリケーションは、ダックタイピングをサポートするpythonで記述されます。つまり、2番目のアプローチでは、モデルが必要なインターフェースを満たす限り、ビューは再利用可能です。