2012-07-29 31 views
2

我曾想過再次嘗試學習校準。 前幾節課很簡單,但隨着我的進步,事情變得複雜起來,我無法單獨弄清楚。在校準中使用屏幕和IOC的正確方法

我設計了一個應用爲目的,以覆蓋大部分具有Conductor<IScreen>類型的ShellViewModel並使用IOC容器組成在App的ViewModels和相關資源,實現IScreen .I'm幾個ChildViews基礎知識。

其中一個孩子就像一個導航臺,用戶可以從中訪問不同的子視圖,這些子視圖也支持導航到一個或兩個其他視圖。

當我查找介紹屏幕和導體概念的示例時,所有那些通過調用ActivateItem(new ChildViewModel())直接創建並激活視圖模型的示例可能是爲了簡單起見,但我無法理解這些視圖模型創建可以如何被委派給IOC容器而不依賴於它。

對於至少一個或兩個屏幕,我可以通過構造函數注入,但是當有很多視圖時,用戶可以從任何給定的視圖導航,並且每個視圖都有自己的附加依賴關係?

原諒初學者的啞巴,任何人都可以指向正確的方向嗎?

回答

2

你想要使用視圖模型工廠,它依賴於你的IoC容器。例如,您的ShellViewModel可以採用IViewModelFactory,該IViewModelFactory具有用於返回NavigatorViewModel(或INavigatorViewModel)的CreateNavigatorViewModel等的方法,並且此實現使用IoC容器來解析I/NavigatorViewModel。

一些IoC容器支持自動創建這些工廠,例如Castle.Windsor有一個Typed Factory Facility,而Ninject有一個創建工廠類型的擴展,您只需定義工廠接口。

+0

MEF適用於IoC,但我主要使用Ninject,並取得了巨大成功。它似乎總體上比我在MEF中做的更少。 – erodewald 2012-08-08 17:11:35

相關問題