2011-01-17 26 views
6

2つの異なる 方法でいくつかのデータを表現しなければならないプログラムがあるとします。 2つの異なるViewModelを持つことでこれを達成したい場合は、 は、両方ともModelオブジェクトの同じインスタンスを共有する必要があるようです。だから これは一般的にWPFでMVVMで達成されますか?モデルは通常ViewModelオブジェクト間でどのように共有されますか?

私は、ViewModelコンストラクタが適切なModelの インスタンスを取ることができ、すべての配線がApplication.Startupイベントのハンドラ で実行できることを考えています。私はこれまでに見た例を のいずれかで行ったことを覚えていませんが、私はそれを見逃したかもしれません。

これまでのところ、それはほとんどの時間のように思える、例はただのviewmodelsにいくつかの 例に仕事ができるモデルクラス自体の 作成例を示すが、以来、私の状況に適したソリューションのように見えるしていません。各 ViewModelはModelクラスの独自のインスタンスを作成します。また、 のように、ユニットテストの場合のようにモデルを 別のものに置き換える可能性を排除します。私は 依存性注入フレームワークまたはIoCコンテナがその問題を解決するだろうと推測しています ?私は今までのところ手動依存性注入だけを使用しました。 Viewは Modelオブジェクト自体を作成し、ビューモデルについて何も知らないはずなので、どちらかのような素晴らしいアイデア のようには思えないのviewmodels、それらを渡すように別の例では

、それが見えました?

いくつかの例では、ViewクラスとViewModelだけではモデルクラスがないようです。

私が言及していないより良い方法がありますか?

さらに、依存性注入フレームワークまたはIoCコンテナを使用する必要がありますか? 前述したように、私は以前は実際に使用していませんでした。私は現時点で取り組んでいるプログラムのサイズについては、 の過剰殺人かもしれないと思いました。 を実際に見ていないと、間違いかもしれません。

答えて

2

一般的なアプローチは、モデルをビューモデルのコンストラクタに渡すことです。おそらく、あなたが見てきた例は単純化のためにそれを示していないでしょう。したがって、同じデータ(モデル)を扱う2つのビューモデルがある場合は、両方のモデルで同じモデルを使用してください。

依存性注入とIoCコンテナについては、小規模なプロジェクトでは過度の話ですが、プロジェクトが大きくなると多くのメリットがもたらされる可能性があります。

+3

大丈夫ですが、これは一般的にどのように行われますか?どのクラスが通常Modelオブジェクトのインスタンスを作成し、それを適切なViewModelオブジェクトに渡しますか?それは私が今混乱している主なものです。 – foven

-1

モデルを共有する必要があります:UIのデータをINotifyPropertyChangedを通じて更新することを望んでいない場合 - これはMVVMの主要なアイデアの1つです。モデルを共有する必要があります特定のViewModel)を表示します。

+1

答えをありがとう。私はすでにモデルを共有する必要があることを知っていますが、私が混乱しているのは、実際にこれを管理するための最良の選択肢です。言い換えれば、異なるViewModelオブジェクトに同じモデルのインスタンスを提供する異なる方法があります。私はこれを達成するための典型的な方法が何であるか、それぞれが適切であるか、各アプローチの長所/短所などが何であるかを知りたい。 – foven

0

アプリケーション全体のモデルをシングルトン/静的クラスとして設定できます。同じインスタンスがデフォルトで共有されます。

関連する問題