如何在 Core 项目和具有更改页面的 WPF 应用程序之间使用依赖注入?

我正在WPF使用MVVM框架构建一个程序,以及Ninjectfor Dependancy Injection. 我创建了两个项目,一个.Net Class Library用于其他.Net应用程序的核心项目和一个WPF特定的应用程序。


目前,我正在使用ApplicationViewModel带有Property CurrentPage. CurrentPage是一种Enum称为ApplicationPage包含我的应用程序中不同页面的类型。在我的WPF应用程序的主窗口是一个框架,其Content是bound到CurrentPage Property并使用值转换器值转换为不同的CustomPages我已经使用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这些页面的传递到Page's Constructor中Converter,使用ViewModels它依次Injected进入ApplicationViewModel类,有点像这样:


case ApplicationPage.PageOne:

    return new PageOne(PageOneViewModel);

我首先想到的是,有没有作出一些方式CurrentPage Property实际上是一个特定的ViewModel和执行switch上ViewModel,因此Converter将一ViewModel到Page?


然而Type ofCurrentPage是一个问题,因为它必须设置为其中之一ViewModels,因此不能采用不同的值ViewModel,让您只能使用一个ViewModel Class。


我的想法是:有没有办法传递ViewModel给Converter?或者我可以设置CurrentPage为IViewModelFactory并ViewModel在工厂的转换器内创建吗?在这种情况下,我将如何更改 的值CurrentPage以更改应用程序中的页面?


有没有办法Dependency Injection在遵循这个逻辑的同时坚持下去,或者有另一种方法,我是否需要重新考虑我的页面更改代码?不幸的是,我见过的大多数例子都陷入了所谓的ServiceLocator反模式。


泛舟湖上清波郎朗
浏览 164回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP