私は混乱しています。多分あなたは私を助けることができます:)
私は CAG のガイダンスに従ってきましたが、MVP パターンが私にとって非常に自然であることがわかりました。UI 対応のモデル (例: INotifyPropertyChanged を実装) があるとします。プレゼンターを使用してこのモデルをビューにバインドし (プレゼンターはビューのインターフェイスを認識します)、コード ビハインドを可能な限り小さく保ち、バインディングのみを処理します (モデルおよびコマンド) プロパティ (またはメソッド) または ICommand を持たないコントロールのイベント。この場合は、すぐにプレゼンターに委任されます。
しばらくして、MVVM パターンを発見しましたが、これまでのところ、私にはわかりません。私のアプローチでわかる限り、モデルが UI 対応でない場合にのみ MVVM を使用します。しかし、プレゼンターを維持して新しいモデルを使用する方が合理的でしょうか?私はこの種の使用法で何を失うのか理解できません. 私は何かが欠けていることを知っていますが、それは何ですか:)。
また、ビューが汎用的で、多くの種類のモデル (PropertyGrid など) を処理できる場合も同様です。ViewModel は DataTemplate と一緒に使用することをお勧めしますが、この場合、モデル内のエンティティごとにテンプレートを作成することはできず、実行時に調査する必要があるだけです。何をお勧めしますか?
Josh Smith がスクリーンキャストでMVVM について話しているのを見ているときに、ViewModel でのモデルの再公開は DRY に違反していると感じました (繰り返さないでください)。それは本当に避けられないのでしょうか? ADO.Net 動的データ メタデータ クラスが最近獲得している炎と比較して、彼がそれについて議論していないことは私を驚かせます。
それが十分に明確だったことを願っています
ありがとう
アリエル