我正在WPF使用MVVM框架構(gòu)建一個(gè)程序,以及Ninjectfor Dependancy Injection. 我創(chuàng)建了兩個(gè)項(xiàng)目,一個(gè).Net Class Library用于其他.Net應(yīng)用程序的核心項(xiàng)目和一個(gè)WPF特定的應(yīng)用程序。目前,我正在使用ApplicationViewModel帶有Property CurrentPage. CurrentPage是一種Enum稱為ApplicationPage包含我的應(yīng)用程序中不同頁(yè)面的類型。在我的WPF應(yīng)用程序的主窗口是一個(gè)框架,其Content是bound到CurrentPage Property并使用值轉(zhuǎn)換器值轉(zhuǎn)換為不同的CustomPages我已經(jīng)使用switchstatment,就像這樣:if (value is ApplicationPage) switch ((ApplicationPage)value) { case ApplicationPage.PageOne: return new PageOne(); case ApplicationPage.PageTwo: return new PageTwo(); default: throw Exception; }}我想使用Constructor Injection將View Models這些頁(yè)面的傳遞到Page's Constructor中Converter,使用ViewModels它依次Injected進(jìn)入ApplicationViewModel類,有點(diǎn)像這樣:case ApplicationPage.PageOne: return new PageOne(PageOneViewModel);我首先想到的是,有沒有作出一些方式CurrentPage Property實(shí)際上是一個(gè)特定的ViewModel和執(zhí)行switch上ViewModel,因此Converter將一ViewModel到Page?然而Type ofCurrentPage是一個(gè)問題,因?yàn)樗仨氃O(shè)置為其中之一ViewModels,因此不能采用不同的值ViewModel,讓您只能使用一個(gè)ViewModel Class。我的想法是:有沒有辦法傳遞ViewModel給Converter?或者我可以設(shè)置CurrentPage為IViewModelFactory并ViewModel在工廠的轉(zhuǎn)換器內(nèi)創(chuàng)建嗎?在這種情況下,我將如何更改 的值CurrentPage以更改應(yīng)用程序中的頁(yè)面?有沒有辦法Dependency Injection在遵循這個(gè)邏輯的同時(shí)堅(jiān)持下去,或者有另一種方法,我是否需要重新考慮我的頁(yè)面更改代碼?不幸的是,我見過的大多數(shù)例子都陷入了所謂的ServiceLocator反模式。
- 1 回答
- 0 關(guān)注
- 178 瀏覽
添加回答
舉報(bào)
0/150
提交
取消