2

もう一度カリバーンを学ぼうと思いました。最初のいくつかのレッスンは簡単でしたが、私が進むにつれて物事は複雑になり、私はそれを一人で理解することはできません。

Conductor<IScreen>タイプのShellViewModelと実装するいくつかのChildViewsを持つ基本のほとんどをカバーする目的でアプリを設計しました。アプリでIScreenViewModelsと関連リソースを構成するためにIOCコンテナーを使用しています。

子の1つは、ユーザーがさまざまな子ビューにアクセスできるナビゲーションデスクのようなものであり、それらの子ビューは、他の1つまたは2つのビューへのナビゲーションもサポートします。

スクリーンとコンダクターの概念を紹介するサンプルを探したとき、を呼び出してビューモデルを直接作成してアクティブ化したサンプルはすべてActivateItem(new ChildViewModel())、簡単にするためかもしれませんが、これらのビューモデルの作成をIOCコンテナーに委任する方法を理解するのに苦労していますそれに依存することなく。

少なくとも1つまたは2つの画面の場合、コンストラクターを介して挿入できますが、ビューが多数あり、ユーザーが任意のビューからナビゲートでき、それぞれに独自の追加の依存関係がある場合はどうでしょうか。

初心者の愚かさを許して、誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

2

IoCコンテナに依存するビューモデルファクトリを使用したいとします。たとえば、ShellViewModelは、NavigatorViewModel(またはINavigatorViewModel)を返すCreateNavigatorViewModelなどのメソッドを持つIViewModelFactoryを取得できます。この実装では、IoCコンテナを使用してI/NavigatorViewModelを解決します。

一部のIoCコンテナは、これらのファクトリの自動作成をサポートしています。たとえば、Castle.Windsorには型付きファクトリファシリティがあり、Ninjectにはファクトリタイプを作成する拡張機能があり、ファクトリインターフェイスを定義するだけです。

于 2012-07-29T13:47:05.297 に答える