2016-10-27 6 views
3

MVVMパターンを理解しようとしていますが、明確ではない問題があります。私のXamarin Formsアプリケーションにはいくつかのビューがあります(これは非常に明白です)。誰もが別のModelViewクラスにバインドされている必要がありますか? MVが1つだけあればいいですか?MVVMパターンにはViewModelクラスが1つしかありませんか?

+6

それが依存しています。通常、各ビューには独自のVMがありますが、2つの同様のビューでVMを共有できます。すべてのビューで同じVMを使用するのは珍しいことですが、理にかなった単純なアプリの場合はそうです。 – Jason

答えて

1

私はいつも「各ビューは独自のVMを持っている」と考えました。モデルは包括的なデザインのサブセットです。

私は苦しい経験から言っています:彼らがサポートしているビュー/ UIだけに基づいてモデルを孤立して設計しないでください。包括的なモデルのバックエンドがなければ、すべての作品を一貫した完全なビジネスモデルに統合するのは難しいでしょう。貧血クラス、冗長ビット、不完全および間違ったバリデーション、同じプロパティ - 異なる名前、既存のコードとの非互換性、ハッキーグルーコードのゴブ、お互いのコードを破るプログラマー、再利用性なし、既存のクラスの再利用なし。私たちのために、3ヶ月のテストフェイル・フィックス・チルト・アラウンドの恥ずかしさの中で、すべてが頭に浮かんだ。

1

はいとノー
はい - >基本的な考え方は、あなたのViewModel 1つのビューだけを使用しなければならないということです。 ViewModelを使用して領域を設定した場合、または異なる場所に表示されるたびにViewModelが「再利用」されます。
いいえ - >ビューモデルで複数のモデルを使用できます。ビューモデルの目的は、ビジネス/データ層(すなわち、モデル)を抽象化することである。 しかし、複数のモデルを使用すると、通常、ビューが大きすぎることが示されます。ユーザーコントロール(独自のビューモデルを持つ)に分割したい場合があります。

参考文献:

  1. With MVVM, does each UI window have its own ViewModel?
  2. In MVVM, is every ViewModel coupled to just one Model?
関連する問題