8

MVVMC パターンに関するこの記事を読みました。質問があります。Controller を ViewModel に注入する必要がありますか、それとも ViewModel を Controller に注入する必要がありますか?

4

4 に答える 4

9

MVVMC は、View が ViewModel ペアに置き換えられた単なる MVC です。

  • View は、XAML ベースのテクノロジの強力なデータ バインディング メカニズムを利用して、ViewModel とのみ対話します。
  • ViewModel はコントローラーに通知できますが、コントローラーを挿入しないでください。

MSDN の Josh Smith のよく知られたサンプルに基づいて、単純なサンプルをまとめました...ここでコントローラーを紹介しました。

于 2013-06-18T19:59:55.620 に答える
5

それはあなたが何をしているかによります。ほとんどの場合、コントローラーをどちらにも挿入する必要はないと推測しますが、必要な場合は、ViewModel で必要になる可能性が高くなります。説明させてください。

コントローラーで何をしているのですか?あなたは何かをしているに違いありません..その「何か」が「データがどのように見えるか」のみに関連している場合、それはビューに属します。「ユーザーに表示されるもの」に関連する場合は、ViewModel に属します。

ViewModel の 1 つにコントローラーを挿入しています。私のViewModelは、ビューでグラフ化されるデータを表します。現在のグラフから新しいグラフにデータ項目を移動するコマンドがあります。これにより「グラフ ウィンドウに表示される内容」が変更されるため、ViewModel にコマンドを実装しました。ViewModel は、独自の項目コレクションからデータ項目を削除し、Controller を使用して、その新しいデータ用に新しいビューを作成するように要求します (この機能は既にあります)。

記事を見るとコントローラーとビューの間に矢印が見えない リンク先の記事より

于 2012-10-12T04:50:30.820 に答える
0

ViewModelは、ビューとコントローラーの間のコントラクトであり、理想的には、どちらかについて知る必要はありません(依存する必要はありません)。

したがって、私は間違いなくコントローラーをViewModelに注入しません。

逆のことをするかどうかもわかりません。通常、コントローラーは新しいViewModelインスタンスの作成を担当します。より緩く結合された実装を使用したい場合は、ViewModelクラスの新しいインスタンスを直接作成しないように、コントローラーに抽象ファクトリを挿入することができます。

于 2012-10-11T14:12:23.997 に答える