MVVM –はじめに
コードを整理するための整然とした、おそらく最も再利用可能な方法は、「MVVM」パターンを使用することです。ザ・Model, View, ViewModel (MVVM pattern) 保守可能、テスト可能、拡張可能なアプリケーションを作成するためにコードを編成および構造化する方法をガイドすることがすべてです。
Model −データを保持するだけで、ビジネスロジックとは何の関係もありません。
ViewModel −モデルとビューの間のリンク/接続として機能し、見栄えを良くします。
View −フォーマットされたデータを保持し、基本的にすべてをモデルに委任します。
個別のプレゼンテーション
アプリケーションロジックをコードビハインドまたはXAMLに配置することによって引き起こされる問題を回避するには、分離表示と呼ばれる手法を使用するのが最善です。これを回避しようとしています。XAMLとコードビハインドがあり、ユーザーインターフェイスオブジェクトを直接操作するために最低限必要なものがあります。ユーザーインターフェイスクラスには、左側の次の図に示すように、複雑な対話動作、アプリケーションロジック、およびその他すべてのコードも含まれています。
個別の表示により、ユーザーインターフェイスクラスははるかに単純になります。もちろんXAMLもありますが、背後にあるコードは実用的ではありません。
アプリケーションロジックは、モデルと呼ばれることが多い別のクラスに属しています。
ただし、これがすべてではありません。ここで停止すると、データバインディングの狂気の道をたどる、非常に一般的な間違いを繰り返す可能性があります。
多くの開発者は、データバインディングを使用して、XAMLの要素をモデルのプロパティに直接接続しようとしています。
今ではこれで問題ない場合もありますが、そうでない場合もあります。問題は、モデルが完全にアプリケーションの動作に関係しており、ユーザーがアプリケーションをどのように操作するかに関係していないことです。
多くの場合、データを表示する方法は、データが内部で構造化されている方法とは多少異なります。
さらに、ほとんどのユーザーインターフェイスには、アプリケーションモデルに属さない状態があります。
たとえば、ユーザーインターフェースでドラッグアンドドロップを使用する場合、ドラッグされているアイテムが現在どこにあるか、可能なドロップターゲット上を移動するときに外観がどのように変化するか、それらのドロップターゲットがどのように変化するかなどを追跡する必要があります。アイテムがそれらの上にドラッグされると変化します。
この種の状態は驚くほど複雑になる可能性があり、徹底的にテストする必要があります。
実際には、通常、ユーザーインターフェイスとモデルの間に他のクラスを配置する必要があります。これには2つの重要な役割があります。
まず、アプリケーションモデルを特定のユーザーインターフェイスビューに適合させます。
第二に、それは重要な相互作用ロジックが存在する場所です。つまり、ユーザーインターフェイスを希望どおりに動作させるために必要なコードを意味します。