在同一个应用程序中使用Prism和GalaSoft MVVM工具包是多余的吗?

时间:2012-10-25 15:30:01

标签: wpf mvvm prism toolkit

我刚刚接受了开始支持使用Prism和GalaSoft工具包的WPF应用程序的任务。在回顾了两个框架的技术之后,在我看来,应用程序的设计者是多余的,因为Prism提供了一个促进MVVM的框架,以及一个允许集成模块的容器。我看到的方式是每个模块都可以实现自己的Model-View-VIewModel。棱镜可以提供所需的一切,以及模块之间的通信和导航。我还注意到该应用程序正在使用的GalaSoft版本不存在于工具包的官方下载页面中。可能是这个版本是从官方下载版本修改过来的吗?

这是我第一次使用WPF技术。即初学者,我将不胜感激任何关于这个问题的评论,并对实现这一实施的最佳方法提出建议。谢谢!

2 个答案:

答案 0 :(得分:1)

它们在某种程度上是多余的: Prism 几乎提供了 MVVMLight 中的所有内容。

几乎,因为我确信在Prism中你没有一些MVVMLight特有的功能。 Prism更大,它提供了一个完整的框架和方法来构建你的MVVM应用程序,而MVVMLight只是为你提供工具(不需要塑造你的架构)来更​​容易地处理MVVM问题。

我认为单个应用程序不需要它们,但也许是谁使用MVVMLight的特定功能。如果代码在构建时考虑到一致性,那么显然不是坏事,所以例如所有ViewModel都使用Prism基础但是对于消息传递(mediator模式)它使用MVVMLight因为我知道很多人都喜欢MVVMLight Messenger胜过Prism的EventAggregator。但可能背后有更好的理由,这只是一个例子,我没有看到你的代码。

无论如何,我认为只使用其中一种更干净。如果这个应用程序需要Prism的功能,那么只使用它,但如果这是一个轻量级应用程序,那么我建议MVVMLight(因此这个库的名称:))。

对于MVVMLight版本:也许它只是一个旧版本,但你应该问这个应用程序的作者。

答案 1 :(得分:0)

两者有不同的目标。 Prism旨在促进复合应用程序,而MVVMLight旨在提供简单的MVVM支持。 Prism必然包含自己的MVVM支持,所以我同意使用两者都是多余的。我还要补充一点,在非复合应用程序中使用Prism可能有点过头了。