16

我有兴趣制作一个相当庞大的体面的 WPF 应用程序。有人建议使用我们目前正在研究的 PRISM。我们可能正在使用 MVVM 模式来实现这个应用程序。我看到了一些 PRISM 的截屏视频,似乎 PRISM 主要用于注入具有不同视图的区域。这是使用 PRISM 的主要目的吗?

我总是可以使用 ContentPresenter 使用 WPF MasterPages,那么为什么我应该将 PRISM 用于区域目的?

4

4 回答 4

12

Prism 提供的不仅仅是区域系统。不详尽:

  • View-Model 命令系统
  • 事件聚合器,用于解耦事件处理(内置许多选项,例如 GUI 线程调用、弱引用等)
  • 加载模块的标准方法,如果您需要这种灵活性

区域系统也不仅仅是一个“内容呈现器包装器”。它可用于“推”(将视图放入区域)或“拉”(让模块声明它们填充哪个区域)。它还支持的不仅仅是简单的 contentpresenter 区域(例如基于 ItemsControl 的区域),并且可以通过区域适配器进行扩展。

最后但也许并非最不重要的一点是,当您采用 Prism 的形式主义时,您押注于外人可能已经知道的通用“语言”(几乎是框架,即使 prism 团队不这么称呼它),而不是重新发明你自己的,这需要有人学习一套全新的东西。对于一个长期存在的项目来说,这可能是一件好事(前提是 Prism 显然不会死得太早)。

于 2009-07-13T14:45:42.770 回答
3

如果您已经在以页面的各个子组件独立的方式合成页面,那么 PRISM(或前身 Composite UI Application Block)除了公认的“标准”合成方式之外并没有给您带来太多好处这是记录在案的。

合成的好处是用户界面中的每个组件都可以单独开发,然后在生产周期的后期捆绑在一起。这意味着您已经生成了可以在多个地方轻松使用的组件,并且组件之间的通信是通过定义明确的接口进行的,而不是典型的“将组件扔到页面上并与状态对话”的方法。

所以,如果你现在正在做的事情有效,我可能会继续这样做。如果你所拥有的东西不发达,如果你有很多开发人员在处理部件和部件,而另一个开发人员或团队将这些部件组合成完整的用户界面,请考虑使用类似 PRISM 的东西。我的经验是使用复合 UI 应用程序块,它在大型项目中带来了很多好处,但承诺的简化对于一个中等规模的项目来说听起来也不错。

于 2009-07-13T14:29:48.427 回答
2

我会在这里强调开发模块的划分。它允许单独的较小团队开发应用程序的各个部分,然后在最后将其组合在一起。

我还想说 MVVM 绝对是要走的路,但 CAG 还鼓励您为您的 ViewModel 使用依赖注入,使它们比其他方式更具可测试性。当然,您可以在没有 CAG 的情况下使用依赖注入,但很高兴有这种正式的鼓励。

于 2009-07-13T19:47:59.033 回答
0

如果你知道复合应用程序块,它基本上是一样的。PRISM 的主要目的是拥有一个 WPF 复合应用程序,其中应用程序的每个部分(即屏幕部分或不可见组件)与应用程序的其他部分松散耦合。

于 2009-07-13T14:31:35.803 回答