Prism能够与MVVM Light配合使用吗?

3

我需要使用Prism。 (我需要复合UI)。但是从MVVM Light的演示中看起来很酷。

这两个框架可以一起工作吗?还是这个想法不好?

有人可以给我展示一个如何让它们共同工作的例子吗?

我想要使用Prism来创建复合UI,而使用MVVM Light来处理MVVM方面的事情。

3个回答

11

是的,它们可以很好地协同工作。

它们都是框架库,因此您可以挑选自己需要的部分。例如,我喜欢使用Prism的NotificationObject(ViewModelBase),但使用MVVM Light的Messenger(用于视图模型之间通信的事件系统)。

有时候在一个项目中,我甚至会同时使用Prism的DelegateCommand和MVVM Light的RelayCommand,即使它们都是用于相同的内容(两者之间的主要区别在于,您必须手动调用DelegateCommand上的CanExecuteChanged()方法,而RelayCommand则会自动执行此操作,有时比必要更频繁)。


非常感谢您的有用评论。您知道PRISM中MVVM Light Messenger的类似物吗?我是PRISM的新手,但基本上只有Messenger让我在项目中保留对两个框架的引用。 - Alex Klaus
2
嗨@Klaus,PRISM有一个“EventAggregator”类,其工作方式类似于MVVM Light的“Messenger”。 我觉得它比“Messenger”更复杂,并且我用了更长时间才弄清楚,但是如果你有兴趣,我在我的博客上有一个[助手类来简化使用“EventAggregator”](http://rachel53461.wordpress.com/2011/10/09/simplifying-prisms-eventaggregator/),可能会有所帮助。 - Rachel

4
我们的项目使用PRISM。虽然PRISM可以与MVVM Light等其他互补框架一起工作,其中有些框架在某些方面可能比PRISM组件更好,但作为整个解决方案,PRISM非常适用。我认为如果没有强制要求使用其他技术,使用一个技术来完成项目会更简单。
使用PRISM的一个优点是教程和学习该技术的帮助非常好。任何新加入团队的人应该相对容易地掌握其概念。
请参考类似问题:MVVM Light + Unity or Prism?

3

Prism和MVVM Light都是MVVM框架,因此使用其中一个是有意义的。


你们在一起使用时遇到了哪些问题? - Jake Berger
1
我个人没有同时使用过它们。它们都是实现相同模式的框架,所以我的建议是选择一个。而另一个答案则暗示它们可以并行工作,但我不会因此混合使用框架而安心入睡。我认为这样做更难以维护,对新手来说更难以掌握,并增加了未来更新破坏兼容性的风险。 - TheCodeKing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接