1. Prism 简介
Prism 是一个用于构建松耦合、可维护和可测试的 XAML 应用的框架,它支持所有还活着的基于 XAML 的平台,包括 WPF、Xamarin Forms、WinUI 和 ~~Uwp~~ Uno。Prism 提供了一组设计模式的实现,这些模式有助于编写结构良好且可维护的 XAML 应用程序,包括 MVVM、依赖项注入、命令、事件聚合器等。
Prism 是一个有10年以上历史的框架,而上个月才刚发布了它的 8.0 版本,这意味着现在网上能找到的大部分 Prism 的资料都已经有点过时,连 官方文档 也不例外。如果你需要详细的文档,除了官方文档,我会推荐 RyzenAdorer 的 Prism 系列文章:
NET Core 3 WPF MVVM框架 Prism系列文章索引 - RyzenAdorer -
如果你不需要那么详细的文档,只需要一个入门的教程,那么我希望我写的这两篇文章可以帮到你。
2. Prism.Core、Prism.Wpf 和 Prism.Unity
从很久以前开始,臃肿 就是 Prism 被提起最多的标签。毕竟比起 MVVMLight,Prism 实现的功能更多;对于初学者来说,刚打开 Prism 的文档很可能会马上选择放弃。Prism 的文档详细到让人望而却步,例如多年前的旧版官方文档的 其中一篇:
不是 6 分钟,不是 16 分账,是整整 60 分钟,Prism 的旧文档随便打开一篇都吓死人。而 Prism 的各种包更是多到离谱。例如几年前的 Prism 6.3,其中 WPF 平台的项目有这么多个:
- Prism.Wpf
- Prism.Autofac
- Prism.DryIoc
- Prism.Mef
- Prism.Ninject
- Prism.StructureMap
- Prism.Unity
所以臃肿是很多人对 Prism 的印象。
减肥是一个永恒的受欢迎的话题,对 Prism 也是一样。相比 Prism 6.3,刚刚发布的 8.0 已经好很多了(虽然还是有很多个项目),例如 WPF 平台的项目已经大幅删减,只保留了 Prism.Wpf、Prism.DryIoc 和 Prism.Unity,也就是说现在 Prism 只支持 DryIoc 和 Unity 两种 IOC 容器。这样一来 Prism 项目的结构就很清晰了。
以 WPF 为例,核心的项目是 Prism.Core,它提供实现 MVVM 模式的核心功能以及部分各平台公用的类。然后是 Prism.Wpf,它提供针对 Wpf 平台的功能,包括导航、弹框等。最后由 Prism.Unity 指定 Unity 作为 IOC 容器。
即使已精简了这么多,Prism 还是有很多功能,两篇文章也不足以讲解全部内容,所以我只会介绍最常用到的入门知识。这篇文章首先介绍 Prism.Core 的主要功能。
3. Prism.Core
Prism.Core 可以单独安装,目前最新的版本是 8.0.0.1909:
Install-Package Prism.Core -Version