在传统的MDI应用程序中,当命令发生时(例如按下功能区按钮)将创建一些对象(表单),因此它可能是一个组合点。我对这些应用程序中的组合根感到困惑。我在某处读到我们可以使用 ViewModelLocator ,它看起来像服务定位器模式。如您所知,服务定位器模式被某些人谴责。
现在请就此问题向我提出建议。
提前致谢。
答案 0 :(得分:7)
ViewModelLocator是否是服务定位器depends partly on its signature和partly on its role。
在任何情况下,WPF应用程序的Composition Root都是OnStartup method - 无论应用程序是否是MDI应用程序都不会改变它。
因为在MDI应用程序中,您可以拥有任意数量的子窗口,所以您很可能需要一个抽象工厂来创建每个ViewModel。