如果我的视图构造函数需要作为参数的所有依赖项都在我的IoC容器中注册,我可以使用IoC自己创建视图而不会出现任何问题。
但是如果我尝试广泛使用DataTemplates,那么WPF会创建我的视图。如果视图没有默认构造函数,那么WPF将失败并崩溃整个应用程序。因此我的问题是 - 在WPF中是否有任何扩展点,以便我可以为它提供一个视图工厂,即使它们没有默认构造函数也可以创建我的视图?
答案 0 :(得分:0)
不幸的是,据我所知,答案是否定的。我只是在寻找相同的东西,但WPF只能用无参数构造函数创建用户控件。
一种解决方案是使用Service Locator模式,其中UserControl可以在其构造函数中访问容器,并通过自身解析其依赖关系。我个人不喜欢这种模式。有些人称服务定位器是一种反模式,从长远来看,它会让你陷入困境。