Mvvm-responsibilities

提供:Dev Guides
移動先:案内検索

MVVM –責任

MVVMパターンは、Model、View、ViewModelの3つの部分で構成されています。 最初の開発者のほとんどは、Model、View、およびViewModelに含めるべきまたは含めるべきではないもの、および各部分の責任について混乱していません。

この章では、MVVMパターンの各部分の責任を学び、どのようなコードがどこに行くのかを明確に理解できるようにします。 次の図に示すように、MVVMは実際にはクライアント側の階層化アーキテクチャです。

MVVMの責任

  • プレゼンテーション層はビューで構成されています。
  • 論理層はビューモデルです。
  • プレゼンテーションレイヤーは、モデルオブジェクトの組み合わせです。
  • クライアントサービスを生成および保持するクライアントサービスは、2層アプリケーションでのアクセスを指示するか、サービス呼び出しを介してアプリケーションにアクセスします。
  • クライアントサービスは正式にはMVVMパターンの一部ではありませんが、MVVMでよく使用され、さらなる分離を実現し、コードの重複を防ぎます。

モデルの責任

一般的に、モデルは理解するのが最も簡単なものです。 アプリケーションのビューをサポートするのは、クライアント側のデータモデルです。

  • これは、メモリにデータを格納するためのプロパティといくつかの変数を持つオブジェクトで構成されています。
  • これらのプロパティの一部は、他のモデルオブジェクトを参照し、全体としてモデルオブジェクトであるオブジェクトグラフを作成します。
  • モデルオブジェクトは、WPFでデータバインディングを意味するプロパティ変更通知を発生させる必要があります。
  • 最後の責任はオプションの検証ですが、INotifyDataErrorInfo/IDataErrorInfoなどのインターフェイスを介してWPFデータバインディング検証機能を使用して、モデルオブジェクトに検証情報を埋め込むことができます

責任を表示

ビューの主な目的と責任は、ユーザーが画面に表示するものの構造を定義することです。 構造には、静的部分と動的部分を含めることができます。

  • 静的パーツは、ビューを構成するコントロールとコントロールのレイアウトを定義するXAML階層です。
  • 動的な部分は、ビューの一部として定義されるアニメーションまたは状態の変化に似ています。
  • MVVMの主な目標は、ビューにコードビハインドがないことです。
  • 背後にコードが存在しないことは不可能です。 ビューでは、少なくともコンストラクターとコンポーネントを初期化するための呼び出しが必要です。
  • その考え方は、イベント処理、アクション、およびデータ操作のロジックコードをViewのコードビハインドに含めるべきではないということです。
  • UI要素への参照が本質的にビューコードである必要があるコードの背後にあるコードに入れなければならない他の種類のコードもあります。

ViewModelの責任

  • ViewModelはMVVMアプリケーションの主要なポイントです。 ViewModelの主な役割は、ビューにデータを提供して、ビューがそのデータを画面に表示できるようにすることです。
  • また、ユーザーはデータを操作してデータを変更できます。
  • ViewModelのもう1つの重要な役割は、ビューの対話ロジックをカプセル化することですが、それは、アプリケーションのすべてのロジックがViewModelに入ることを意味するものではありません。
  • ユーザーまたはビューの変更に基づいて正しいことを行うために、適切な呼び出しシーケンスを処理できる必要があります。
  • ViewModelは、別のビューに移動するタイミングを決定するなど、ナビゲーションロジックも管理する必要があります。