1

我习惯于将 Windsor Castle IoC 与 MVC Web 应用程序一起使用,因此我对注册组件和引导应用程序有点熟悉。

我现在正在尝试创建我的第一个 WPF 应用程序,但我有点迷失了......

在一个典型的 MVC 项目中,我会在 Global.asax 文件的 Application_Start 中注册我的所有组件。
此外,在 Global.asax 我会做这样的事情:

_container = new WindsorContainer();
var myControllerFactory = new MyControllerFactory(_container.Kernel);
ControllerBuilder.Current.SetControllerFactory(myControllerFactory);

其中MyControllerFactory继承自DefaultControllerFactoryI 将解析给我的控制器,因此所有正在使用的控制器将自动解析它们的依赖关系。

我怎么能在 WPF 应用程序中做到这一点?
我创建了一个名为的类ContainerBootstrapper来注册我的组件,现在我想知道如何在我的组件中使用它,MainWindow所以每次调用组件时,它的依赖关系都会自动解决......

4

1 回答 1

2

与 MVC 不同,WPF 不提供开箱即用的解耦 UI 开发框架。有几个(例如实现 MVVM 模式的Caliburn.Micro)位于 WPF 之上,并为各种 IoC 容器以及您可能会发现在 WPF 开发中有用的其他功能提供集成。

或者,您将需要直接管理容器。即在 App.xaml.cs 或 MainWindow.xaml.cs 中实例化和初始化容器,并确保通过容器的 Resolve() 函数构造新对象。如果它是一个重要的应用程序,您可能希望将其集成到应用程序的导航例程中。

于 2012-07-01T22:00:04.993 回答