質問

MVVM と MVVM-light についてさらに詳しく調べていくと、モデルに提供される MVVM-light の基本クラスが存在しないことがわかりました。

しかし、私の理解によれば、メッセージングと通知の発生はモデルでも発生する可能性があります。少なくともモデル間の通信においては、メッセージングが非常に便利であることがわかります。

そこで、一部のプロパティ (デザイン時のプロパティなど) は使用されませんが、ViewModelBase からモデルを派生させることにしました。

しかし、これを見れば見るほど、何かを見逃しているように思えます。ViewModelBase からモデルを派生させることは「悪い習慣」とみなされますか?

また、モデルの通信にメッセージングを使用しても問題ありませんか?

役に立ちましたか?

解決

好きなものからビューモデル クラスを派生させます...MVVM-light は、ICleanUp の実装を提供する VieWModelBase を提供します。これは、ViewModel オブジェクトのライフサイクルの管理に適しています。私自身の選択は、プロパティ変更通知のすべてのスキャフォールディングを基本クラスに実装し、そこからモデル クラスに派生することでした。モデルクラスに関して私が持つ唯一の強力な提案は次のとおりです。

  1. サイズが合わなくなったら. 。データの保存方法は、データの操作方法とは異なる場合があります。ViewModel オブジェクトは、ストレージではなく操作のサポートを目的としている必要があります。同じデータ (モデル) を 2 つのまったく異なる方法で操作する必要がある場合は、2 つの方法を設計します。これらのさまざまな対話をサポートするためのさまざまな ViewModel。
  2. 属性を使用してください (System.ComponentModel のように) モデルに注釈を付けます。多くの検証作業をこの方法で行うことができます。 フィードバック これはプレゼンテーション層 (View + ViewModel) の責任であり、問​​題の領域 (つまり、問題の領域) ではありません。モデル)。

また、本当に優れた ViewModel クラスは、通常、単一のユーザー操作内でリサイクル/再利用できるほどステートレスであるため、大きなデータ リストを仮想化して (WPF は仮想化をサポートしています)、RAM を節約できます。

DRY (同じことを繰り返さない)、KISS (シンプルに、愚か!)、YAGNI (必要ない) は覚えておくべき原則です。 その上 あらゆる学術的な設計原則。私は学術的に完璧な MVC/MVVM パターンを実装する WPF アプリに文字通り何週間も費やしましたが、完成したソリューションの全体的な理解が損なわれていることがわかりました。それで...単純にする!:)

他のヒント

私は複合アプリケーションライブラリの中EventAggregatorを見てみましょう。 での答えがこののポストはそれの適切な説明があります。ジェレミー・ミラーのポストのは、もう少し詳細になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top