web-dev-qa-db-ja.com

MVVMを使用する場合、WPFのビューモデルでプロパティインジェクションを使用しても問題ありませんか?

C#/。NET WPFプロジェクトでのMVVMの概念はかなり新しいです。私の理解では、ビューモデルは、フォームにデータを表示するために必要な分離コードの量を減らすことになっています。私はビューモデルで可能な限り多くのインタラクションロジックを実行しようとするため、使用するオブジェクトはすべて、プロパティインジェクションを介してビューモデルに渡されます。次に、ビューモデルはそれらのオブジェクトを利用して、アプリケーションが実行するはずのことを何でも行います。

ビューにある唯一のロジックは、ユーザーの選択に基づいて何かをインスタンス化し、それをすぐにビューモデルに渡すことです。さらに、実際にそれを行う必要があるのは、バインドする意味がないいくつかのことだけです(他のものはすべてデータバインディングを使用します)。

私が尋ねていることは...オブジェクトをビューモデルに渡すことは一般的に大丈夫ですか?それとも、私が認識していない何らかのカップリングやその他の問題を引き起こしますか?

2
Snoop

どのようなオブジェクトをViewModelに渡したいですか?

私のMVVMの見方は、私のViewModelは私のアプリケーションであり、ViewはViewModelと対話するための非常にユーザーフレンドリーなインターフェースにすぎません。理想的な世界では、コマンドラインインターフェイスをApplicationViewModelに簡単に接続して、同じアクションを実行できるはずです。

ViewのSelectedItemに基づいてオブジェクトを作成し、作成したオブジェクトをViewModelに渡そうとしているようです。それは通常、あなたが望むものではありません。

必要なのは、SelectedItem(ビューにバインドされてユーザーが簡単に変更できる方法)を含むViewModelであり、そのViewModelはViewModel.SelectedItemプロパティを使用してオブジェクトを作成する必要があります。そこから、必要に応じて別のViewModelに渡したり、他のアクションを実行したりできます。

パターンについてもう少し詳しく知りたい場合は、ブログに非常に 簡単なMVVMの例 を掲載しています。その基本的な例を探しているStackOverflowのWPF初心者に私が通常与えるものです。 :)

1
Rachel