简而言之:为了预期的新NuGet包,编译最新的Prism代码。
首先进行一小段介绍来让每个人都处于同一水平线上。Prism是由Microsoft Patterns & Practices创建的MVVM指导/框架。他们发布了WPF/Silverlight的版本5。此外,他们还发布了适用于Windows 8的Windows Runtime Prism,后来更新为Win8.1/WP8.1 RT。这些是两个不同的代码库,第二个更轻量级,例如区域等方面,但为应用程序生命周期管理提供了非常有用的支持。很多人错误地认为它们是相同的。
在三月份,Prism的所有权转移到了社区作为一个开源项目,并且可以在GitHub上获得。他们决定向前发展,在PCL核心程序集中合并公共代码并添加对Xamarin Forms的支持。
截至今天,尚没有UWP的Prism 6 RTM版本。代码库非常接近发布,只有几个小问题未解决,但没有阻止大多数用户使用已有的位。此时,我建议你克隆GitHub存储库,编译程序集并开始移植应用程序。有一些破坏性变化(主要是名称空间),但你应该很快就可以完成移植。一旦RTM包可用,请删除硬引用并使用NuGet。
我已经移植了我们较小的一个应用程序,并计划在本周末移植一个较大的LOB应用程序(超过60个屏幕)。
回到讨论使用哪个MVVM框架的问题。如果你的应用程序只有几个页面,不要费心使用框架,保持MVVM简单即可。如果你打算创建复杂的LOB应用程序,这些框架有它们的优势(当然也有缺点)。有很多选择(例如MVVM Light、Prism、Caliburn Micro等),它们都很好。
你的同事选择Prism可能有像Depechie提到的理由。首先,我想到的是应用程序生命周期管理方面,Prism在这方面有更出色的支持。
通过正确使用基类,你应该能够消除每个单独ViewModel的大部分依赖关系,以防万一你最终想要切换到另一个框架。
当你切换时,Prism for Windows Runtime和MVVM Light之间的主要区别(我能想到的)是VisualStateAwarePages、ViewModelLocator(自动与每个视图的属性)、BindableBase用于INotifyPropertyChanged以及一切有关应用程序生命周期管理的内容。两个框架都很好,但我不建议在它们之间切换一个完整的LOB应用程序,因为这样会导致太多工作(引入可能的错误)。