[Windows] 在 Microsoft Docs 网站中挖掘 MVVM 的各种学习资源

  • A+
所属分类:.NET技术
摘要

最近写了一些 MVVM 框架的文章,翻了一些 Microsoft Docs 的文档,顺便就对 MVVM 本身来了兴致,想看看更多当年相关的文档。在 MVVM 出现后十多年,我在不同的场合见到过多种 MVVM 的实现方式,也看到过各种 MVVM 框架的多次改进(这些框架通常包含多个用于实现解耦体系结构的服务,在一定程度上使 MVVM 的确切定义变得模糊),这些都让我对 MVVM 的理解变得多样化。这种情况下重温一下 MVVM 的文档也并不是毫无意义。

[Windows] 在 Microsoft Docs 网站中挖掘 MVVM 的各种学习资源

最近写了一些 MVVM 框架的文章,翻了一些 Microsoft Docs 的文档,顺便就对 MVVM 本身来了兴致,想看看更多当年相关的文档。在 MVVM 出现后十多年,我在不同的场合见到过多种 MVVM 的实现方式,也看到过各种 MVVM 框架的多次改进(这些框架通常包含多个用于实现解耦体系结构的服务,在一定程度上使 MVVM 的确切定义变得模糊),这些都让我对 MVVM 的理解变得多样化。这种情况下重温一下 MVVM 的文档也并不是毫无意义。

在 Microsoft Docs 网站上搜 “MVVM” 关键字有 200 多个结果,搜 ViewModel 关键字有 1400 多个结果,要全部看完显然太多。我一边回顾/重温,一边整理了一些有趣的文档以供参考。

1. MSDN 杂志

[Windows] 在 Microsoft Docs 网站中挖掘 MVVM 的各种学习资源

首先是 MSDN 杂志。在发行 30 多年后,MSDN 杂志完成了它的使命。今天我们仍可以在 Microsoft Docs 上找到当年的 MSDN 杂志的存档,其中关于 MVVM 的内容也有不少。虽然也有介绍如何使用 MVVM 框架的文章,但难道使用 MVVM 就一定要用框架吗,MVVM 岂是如此不便之物。下面我只列出了 MSDN 杂志中关于 MVVM 本身的内容。部分中文翻译的文章我直接给出中文地址,其它则是英文原文。

2. Prism

[Windows] 在 Microsoft Docs 网站中挖掘 MVVM 的各种学习资源

接下来看看 Prism。Prism 本来由微软 patterns & practices 团队领导,后来 离家出走,现在的新家在 Github,也有了独立的 官方文档。虽然分开了,可是微软倒是挺念旧,搬了新家也带着 Prism 的旧文档。可别以为这份 2014 年的旧文档年纪大了就没用了,先来看看这个 6 岁的老同志的介绍:

Prism以示例和文档的形式提供指导,帮助您轻松设计和构建丰富、灵活、易于维护的 Windows Presentation Foundation(WPF)桌面应用程序。使用包含重要架构设计原则(如关注点分离和松耦合)的设计模式,Prism可以帮助您使用松散耦合组件设计和构建应用程序,这些组件可以独立演化,但可以轻松无缝地集成到整个应用程序中。简而言之,这些应用程序是“为持久而构建”和“为改变而构建的”。这些类型的应用程序被称为复合应用程序。

Prism 并不仅仅是一个 MVVM 框架,它还是微软曾经给出的最好的 Wpf 实践指导。这份总建议阅读时间超过 7 小时的文档是微软 patterns & practices 团队交给 Wpf 开发者的最后的波纹。它解释了 Wpf 不同于 WinForms 的 UI交互,并介绍了架构设计原则、包含 MVVM、依赖注入在内的多种设计模式以及 Prism 的使用和实现原理,还有各种模式的代码示例,通过阅读这些文档,我敢保证,你的英语会变好一些。

上面的是 Prism 5 的文档, 其实 Prism 4 的文档也差不多,我在博客园上找到一份 Prism 4 的文档翻译:

Prism - 随笔分类 - 西夏 - 博客园

还有这份08年的文档,介绍了 Prism 最初的概念:

Prism (Composite Application Guidance for WPF)

3. Xamarin 中的 MVVM

[Windows] 在 Microsoft Docs 网站中挖掘 MVVM 的各种学习资源

近几年 Xamarin 的文档颇有活力,其中关于也有几篇关于 MVVM 的内容:

4. 数据绑定

[Windows] 在 Microsoft Docs 网站中挖掘 MVVM 的各种学习资源

大致上关于 MVVM 的文档就是上面这些了。另外还需要确保数据绑定和命令的知识,它们是 MVVM 最基础的概念,所以这方面的文档也可以看一看。

关于数据绑定,由于是 XAML 平台的基础,各个平台的文档都写得很详细。Wpf 的数据绑定文章写在一篇里,预计阅读时间长达38分钟:

Data binding overview in WPF

Xamarin 的数据绑定文档相对友好,分成多篇文章:

Xamarin.Forms 数据绑定

[Windows] 在 Microsoft Docs 网站中挖掘 MVVM 的各种学习资源

比起 Wpf 和 Xamarin,我觉得 Uwp 的文档更有趣些,虽然 Uwp 的数据绑定和 Wpf 的有很多不同,但也很值得参考:

5. 其它

在稍微复杂一些的 XAML 中一个元素可能很难搞清楚自己的 DataContext,因为这涉及它的逻辑树、Parent 的DataContext、DataTemplete 等。总之,使用 Binding 的元素需要搞清楚自己的定位。所以了解一下 Data TemplatingTrees in WPF 对做好 DataBinding 也会有帮助。

另外,只有少量的控件有对 ICommand 的处理,所以通过 使用行为 将数据和事件转换为 Command 的调用是实现 MVVM 必不可少的技能。

6. 最后

写这篇文章的过程简直成了大型考古,很开心有机会重温这些当年帮了我很多的文档。可喜的是十年前的文章对 XAML 开发居然还有用,可悲的是十年前的文章对 XAML 开发居然还有用。

Microsoft Docs 保存了多年来微软各种技术文档的存档,有兴趣的话你也可以在这里寻找到当年的回忆。