我有兴趣制作一个相当庞大的体面的 WPF 应用程序。有人建议使用我们目前正在研究的 PRISM。我们可能正在使用 MVVM 模式来实现这个应用程序。我看到了一些 PRISM 的截屏视频,似乎 PRISM 主要用于注入具有不同视图的区域。这是使用 PRISM 的主要目的吗?
我总是可以使用 ContentPresenter 使用 WPF MasterPages,那么为什么我应该将 PRISM 用于区域目的?
我有兴趣制作一个相当庞大的体面的 WPF 应用程序。有人建议使用我们目前正在研究的 PRISM。我们可能正在使用 MVVM 模式来实现这个应用程序。我看到了一些 PRISM 的截屏视频,似乎 PRISM 主要用于注入具有不同视图的区域。这是使用 PRISM 的主要目的吗?
我总是可以使用 ContentPresenter 使用 WPF MasterPages,那么为什么我应该将 PRISM 用于区域目的?
Prism 提供的不仅仅是区域系统。不详尽:
区域系统也不仅仅是一个“内容呈现器包装器”。它可用于“推”(将视图放入区域)或“拉”(让模块声明它们填充哪个区域)。它还支持的不仅仅是简单的 contentpresenter 区域(例如基于 ItemsControl 的区域),并且可以通过区域适配器进行扩展。
最后但也许并非最不重要的一点是,当您采用 Prism 的形式主义时,您押注于外人可能已经知道的通用“语言”(几乎是框架,即使 prism 团队不这么称呼它),而不是重新发明你自己的,这需要有人学习一套全新的东西。对于一个长期存在的项目来说,这可能是一件好事(前提是 Prism 显然不会死得太早)。
如果您已经在以页面的各个子组件独立的方式合成页面,那么 PRISM(或前身 Composite UI Application Block)除了公认的“标准”合成方式之外并没有给您带来太多好处这是记录在案的。
合成的好处是用户界面中的每个组件都可以单独开发,然后在生产周期的后期捆绑在一起。这意味着您已经生成了可以在多个地方轻松使用的组件,并且组件之间的通信是通过定义明确的接口进行的,而不是典型的“将组件扔到页面上并与状态对话”的方法。
所以,如果你现在正在做的事情有效,我可能会继续这样做。如果你所拥有的东西不发达,如果你有很多开发人员在处理部件和部件,而另一个开发人员或团队将这些部件组合成完整的用户界面,请考虑使用类似 PRISM 的东西。我的经验是使用复合 UI 应用程序块,它在大型项目中带来了很多好处,但承诺的简化对于一个中等规模的项目来说听起来也不错。
我会在这里强调开发模块的划分。它允许单独的较小团队开发应用程序的各个部分,然后在最后将其组合在一起。
我还想说 MVVM 绝对是要走的路,但 CAG 还鼓励您为您的 ViewModel 使用依赖注入,使它们比其他方式更具可测试性。当然,您可以在没有 CAG 的情况下使用依赖注入,但很高兴有这种正式的鼓励。
如果你知道复合应用程序块,它基本上是一样的。PRISM 的主要目的是拥有一个 WPF 复合应用程序,其中应用程序的每个部分(即屏幕部分或不可见组件)与应用程序的其他部分松散耦合。