Prism と Silverlight で MVVM を使用しています。1 つのモデルに対して複数の異なるビューがあります。私がより多くのビューを書いているので、それらのビューモデルは、この 1 つのモデルの処理に関連する多くの一般的なコードを複製しているようです。すべての VM で同じ共通コードを繰り返すのではなく、それをモデルに押し戻したいと思っています (これは、懸念事項があまりにも複雑になる可能性があります)。それとも、いくつかの一般的な ViewModel 基本クラスに入れますか? それとも、VM とモデルの間に第 2 レベルの「共有 VM」が必要なのでしょうか? この単一の共有インスタンスである第 2 レベルの VM は、複数の通常の VM によって共有される動作と状態を統合します。
これらの問題と可能なアプローチについて何かコメントはありますか?
コメントありがとうございます。問題となっている特定の「共有」VM コードについて、もっと詳しく説明するべきだったでしょう。
VM 基本クラスに将来のコードを配置することはわかりますが、私が見ている特定の「共有」コードは、モデル自体によって実装された INotifyPropertyChanged に属しているようです。これは、この別のスレッドに部分的に基づいています。
モデルは本質的に動的であるため、これが SoC に違反しているとは思いません。そのプロパティの一部は、特定の時間にのみ有効です。モデルのその動的な性質は、UI にとって重要なだけでなく、適切な単体テストでも考慮されます。したがって、このモデルには INotifyPropertyChanged が必要なようです。
それについて何かコメントはありますか?