C1DataSource を使用すると、他の任意の Model-View-ViewModel(MVVM)フレームワークで MVVM アプリケーションを作成できます。
C1DataSource は、MVVM 開発を容易にするさまざまな機能を提供します。
「MVVM の簡略化」で説明したように、C1DataSource を使用して MVVM プログラミングを簡略化できることから、MVVM に使用できるツールであることは明らかです。
MVVM 作業の支援に使用できるツールやフレームワークは多数存在しますが、ビューモデルクラスの作成を支援するツールはほとんどありません。大部分は、ビューとビューモデルの間でコマンドやメッセージを受け渡しするなどのタスクを支援する目的で設計されています。ビューモデルクラスを作成し、それをモデルデータと同期する作業は、ほぼ完全に手作業のコーディングに委ねられています。これが、大部分の MVVM アプリケーションでコードが肥大化する主な原因であり、また他のフレームワークと完全に互換な方法でこれを緩和するように C1DataSource が設計されている理由でもあります。
MVVM アプリケーションの開発に便利な好みのフレームワークを使用できます。後は、C1DataSource を利用してライブビューを提供するだけで、ビューモデルクラスを作成できます。
これらの重要な点を具体的に説明するために、MVVM の考案者の一人である Josh Smith の有名な記事「Model-View-ViewModel デザインパターンによる WPF アプリケーション」(https://msdn.microsoft.com/ja-jp/magazine/dd419663.aspx)に基づくサンプルコードを提供しています。
このサンプルは、Documents\ComponentOne Samples\Entity Framework DataSource\OrdersDemo\Orders-EF-MVVM フォルダにあります。
改変したサンプルに含まれるファイルは、1つのファイル ViewModels\OrdersViewModel.cs を除いて、いずれも基本的に元のサンプルと同じです(小さな外観の変更を除く)。
このファイルでは、ライブビューを使用して、C1DataSource の方式でビューモデルクラスを作成しています。ビューモデルを構築するために、いくつの再形成関数がモデルデータに適用されているかを確認できます。LINQ だけを使用してすべてが実行されています。このようにビューモデルの構築は容易で、必要なコードも減ります。2つのレイヤのいずれかでデータが変更された場合に、モデルデータと自動的に同期する部分が最も優れた部分です。同期のためのコードは不要です。
ビューモデルクラス自身の作成方法だけを変更したという事実(派生元の基本クラスは 'ViewModelBase' のまま)、さらに Josh Smith が元の例で採用したフレームワークコードを変更していないという事実は、C1DataSource が他のフレームワークと完全に互換性があることを示す例となります。MVVM を使用した作業では、引き続き好みのフレームワークを使用できますが、MVVM 開発をさらに容易にするツールが追加されています。