棱镜,将区域映射到视图



我对棱镜很陌生。我正在研究它附带的QuickStarts以及网络上的其他示例。几乎所有这些模块都让模块知道它们的视图所在的区域。通常,模块的方法Initalize有一行,如下所示。

RegionManager.Regions["LeftRegion"].Add(fundView);

我对此感到很不舒服。也有类似的讨论,但我认为应该由shell组件负责定义这样的映射。然而,我找不到任何这样的方法的例子,我不确定引导程序是否是放置这种映射的正确位置。

这种做法完全错误吗?

没有什么是完全错误的。但是,让shell/引导程序(在设计上对它将托管的应用程序一无所知)知道什么视图进入哪个区域是没有意义的。

考虑一个可以通过简单地将模块添加到给定文件夹中来扩展的应用程序。当您采用模块知道其视图要驻留在哪里的方法(映射在Initialize()中完成)时,这是没有问题的。我用这种方式设计了我的第一个Prism应用程序。

但是,如果映射是在shell中完成的,那么当您想要添加另一个模块时,总是必须更新shell(它是基础应用程序的一部分,而不是任何模块)。这与松散耦合的范式背道而驰。此外,您必须为每个模块星座创建一个基本应用程序。还有(2^个模块)的排列,你必须涵盖。这会导致你失去使用棱镜获得的灵活性。

最新更新