通常、ビューはWPFウィンドウで、対応するコードの背後にあります。ビューモデルは、特定のビューのデータレイヤ要件を処理し、処理を行うために作成されたシンプルなクラスです。コントロールのXAMLビューでコマンドを使用するのが一般的であり、各コマンドはビューモデルにあるコマンドインスタンスにバインドされています。ビューモデルは、依存性注入によって作成することもできますし、コードビューのビューのコンストラクタに渡すこともでき、コードの背後にメンバー/プロパティとして格納されます。ビュー・データ・コンテキストをビュー・モデルのインスタンスに設定して、ビュー・モデルのプロパティおよびコマンドにバインドできるようにしてください。
this.DataContext = new TheViewModelType();
エンティティフレームワークの古いプレーンの古いCLRオブジェクトは、データモデルであり、ビューは通常これらについては認識してはいけません。ビューモデルには、Itemsコントロールなどでビューがバインドできるモデルタイプのプロパティがあります。ビュー中のSO:ビューのDataContextのは、ビューモデル型のインスタンスであるため
<ItemsControl x:Name="CarItems" ItemsSource="{Binding Vm.CarsCollection}"></ItemsControl>
ので、ビューコントロールは、ビューモデルのプロパティに直接結合することができます。この例は、Carsのコレクションを持つビューモデルであり、ビューモデルはCarsコレクションに必要なときにサービスを呼び出すことができます。明らかにカーがモデルです。例INT車サービスについて
public MyViewModel()
{
Cars = TheCarsDataLayerService.GetCars();
}
private IObservable<Car> _cars;
public IObservable<Car> Cars
{
get { return _cars; }
set
{
if(_cars == value)
return;
_cars = value;
RasisePropertyChanged("Cars");
}
}
、これは、データ層のリポジトリであってもよく、またはそれは、Entity FrameworkのDbContextのインスタンスとすることができます。したがって、ビューモデルは、DbContextから派生した型またはそのサービスのフィールドを持つことができ、ビューモデルクラスのコンストラクタに渡すことも、依存性注入を注入することもできます。また、サービスはビューモデルそのビューに表示されるデータをメンバーに移入してユーザーに表示します。
MVVMは、さまざまな方法で実装できるかなり基本的なデザインパターンです。いくつかの開発者はパターンを新しい高さに持ち、パターンのコンポーネントが通信する多くのルールに厳密に従います。最終的には、パターンの使用方法に関係なく、パターンを使用しない場合よりもはるかに優れています。これにより、コードのスケールが大幅に改善され、他の開発者がコードを理解しやすくなります。また、MVVMパターンを使用すると、WPF開発者はユニットテストを行うことができます。十分にうまくいけば、ビューモデルをテストすることができます。コードがビューの後ろにコードがなく、ビューは何もしませんが、それはわからないデータを表示するので、ビューモデルをテストするだけで十分です。
私はその部分を手に入れます。私の質問は、私のビューモデルを作成する実際の行為はどこで行われるべきですか?私はこれらの3つの別々の部品、モデル、ビューのモデルとビューを今すぐ持っています。現時点では、モデルを使用してビューモデルにデータを取り込む場所がわかりません。 – Ryan
あなたの質問にはMVVMとWCFがありますか?あなたのWCFクラスはコントローラとして機能するはずです...私の答えはコントローラの仕事を扱います。 –
Gotcha。私はあなたの編集の前にコメントしました。入力いただきありがとうございます。 – Ryan