我对Prism很新。我正在研究随附的QuickStart以及网上的其他示例。几乎所有这些模块都让模块知道他们的视图被放入哪个区域。通常,模块的初始化方法有如下所示的行。
RegionManager.Regions["LeftRegion"].Add(fundView);
我对此感到非常不舒服。有一个similar discussion,但我认为应该由shell组件负责定义这样的映射。但是,我找不到这种方法的任何示例,我不确定引导程序是否适合放置此类映射。
这种做法完全错了吗?
答案 0 :(得分:0)
没有什么是完全错误的。但是让shell / bootstrapper(通过设计对它将托管的应用程序一无所知)知道哪个视图进入哪个区域是没有意义的。
考虑一个可以通过简单地将模块添加到给定文件夹中来扩展的应用程序。当您按照模块知道其视图要驻留的位置的方法(映射在Initialize()
中完成)时,这没有问题。我这样设计了我的第一个Prism应用程序。
但是如果您的映射是在shell中完成的,那么当您想要添加另一个模块时,您总是需要更新shell(它是基本应用程序的一部分,而不是任何模块)。这与松散耦合范式相反。除此之外,您还必须为每个模块星座创建一个基本应用程序。并且您必须覆盖(2 ^个模块)排列。这会导致您使用Prism失去灵活性。