2017-11-14 25 views
0

DIとIoCを含むMVVMパターンにできるだけ従わせようとしているWPFアプリケーションを開発しています。 アプリケーションは、視覚的階層は以下のものを含む「第一ビューモデル」として構成されている:ネストされたビューモデルのIOCコンテナ

MainView 
|-Login View 
|-Content View 
    |-Content A 
    |-Content B 
    |-Content x 

各ビューは、そのVMによって参照されます。 "MainViewModel"と "ContentViewModel"は、子VMを参照するプロパティを公開し、内部要素のナビゲーションを制御します。 「コンテンツA」、「コンテンツB」などのアイテムは、DIを通して管理したいさまざまなサービスに依存していると言われています。

私はUnityContainerを使用し、 "OnStartup"のすべての依存関係を登録しますが、ここでは私の質問になります:ServiceLocatorを使用したくないので、どのようにして "サブビューモデル" ?私は理論の面で何か間違っているとはかなり確信していますが、私はオンラインで参考文献を見つけていません。 オンラインで見つかった各チュートリアル/例は、コンテナ内の依存関係を登録してすぐにモデルを解決するだけです。


+0

どのようにサブビューモデルを作成していますか? – mm8

+0

@ mm8親VMがそれらをインスタンス化し、 "CurrentSubVM"プロパティにオブジェクトを割り当てて、バインドされたビュースワップを実現します – Socket2104

+0

そして親はコンテナにアクセスできますか?それで子供たちにコンテナを注射することができました。 – mm8

答えて

1

親ビューモデルは、コンテナへのアクセス権を持っており、任意の子ビューモデルを作成する責任があるので、あなたは親ビューモデルでそれらをインスタンス化するとき、あなたは単にコンテナを参照して、子ビューモデルを注入でき:

this.ChildViewModelProperty = new ChildViewModel(_container); 

これはコンストラクタ依存性注入の典型的な例です。

+0

恐ろしい、私はその情報がありませんでした、ありがとう! – Socket2104

関連する問題