为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
泛舟湖上清波郎朗 2021-07-02 14:01:38
我正在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反模式。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信