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

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

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

1. MSDN 杂志

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

  • Patterns - WPF Apps With The Model-View-ViewModel Design Pattern

  • 使用 Model-View-ViewModel 的问题和解决方案

  • 用于 WPF 的 Model-View-Presenter-ViewModel 设计模式

  • 在 Windows 8 中使用 MVVM 模式

  • Maximizing the Visual Designer’s Usage with Design-Time Data

  • Leveraging Windows 8 Features with MVVM

  • 使用 MVVM 编写跨平台表示层

  • 使用 MVVM 编写可测试的表示层

  • 针对异步 MVVM 应用程序的模式:数据绑定

  • 针对异步 MVVM 应用程序的模式:命令

  • 针对异步 MVVM 应用程序的模式:服务

  • MVVM 应用程序中的多线程与调度

  • 最大限度地利用Roslyn体验MVVM

2. Prism

接下来看看 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 的使用和实现原理,还有各种模式的代码示例,通过阅读这些文档,我敢保证,你的英语会变好一些。

  • Developer's Guide to Microsoft Prism Library 5.0 for WPF

  • 1: Introduction to the Prism Library 5.0 for WPF

  • 2: Initializing Applications Using the Prism Library 5.0 for WPF

  • 3: Managing Dependencies Between Components Using the Prism Library 5.0 for WPF

  • 4: Modular Application Development Using Prism Library 5.0 for WPF

  • 5: Implementing the MVVM Pattern Using the Prism Library 5.0 for WPF

  • 6: Advanced MVVM Scenarios Using the Prism Library 5.0 for WPF

  • 7: Composing the User Interface Using the Prism Library 5.0 for WPF

  • 8: Navigation Using the Prism Library 5.0 for WPF

  • 9: Communicating Between Loosely Coupled Components Using the Prism Library 5.0 for WPF

  • 10: Deploying Applications Using the Prism Library 5.0 for WPF

  • 11: Glossary for the Prism Library 5.0 for WPF

  • 12: Patterns in the Prism Library 5.0 for WPF

  • 13: Prism Library 5.0 for WPF

  • 14: Upgrading from Prism Library 4.1

  • 15: Extending the Prism Library 5.0 for WPF

  • 16: Code Samples Using the Prism Library 5.0 for WPF

  • 17: Getting Started Using the Prism Library 5.0 for WPF Hands-on Lab

  • 18: Publishing and Updating Applications Using the Prism Library 5.0 for WPF Hands-on Lab

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

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

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

Prism (Composite Application Guidance for WPF)

3. Xamarin 中的 MVVM

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

  • The Model-View-ViewModel Pattern

  • Using the Model-View-ViewModel (MVVM) pattern in a Windows Store business app using C#, XAML, and Prism

  • 第 18 章:MVVM

  • 从数据绑定到 MVVM

4. 数据绑定

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

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

Data binding overview in WPF

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

Xamarin.Forms 数据绑定

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

  • 数据绑定概述

  • 深入了解数据绑定

  • x:Bind 中的函数

  • 教程:创建数据绑定

  • 设计面图上以及用于原型制作的示例数据

  • 绑定分层数据和创建大纲/细节视图

  • 数据绑定和 MVVM

5. 其它

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

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

6. 最后

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法题目——岛屿数量(bfs dfs)

题目链接:leetcode.200岛屿数量 dfs 重点:路过过的点做新标记 ,以防止重复路过 思路: 数据读取完成后 1.对所有数据进行一次循环 2.在循环内部,如果元素为‘1’则进入dfs算法 3.在深度优先遍历中,先将该元素标记为‘0’,在查看它的上下左右元素是否为‘1’,是‘1’则进…

注意| .NET开发者大会防疫须知 !

2020年12月19-20日中国.NET开发者大会将于苏州举办疫情常态化的情况下为确保大会顺利进行大会组委会从会议内容、会务筹备等方面均进行了全面的精细准备以下是组委会发布的参会防疫指南敬请所有现场参会的小伙伴认真阅读并严格按照防疫需求作相应准备▽为保证大会的顺利召开&am…

tensorflow打印模型图_从Tensorflow模型文件中解析并显示网络结构图(pb模型篇)...

最近看到一个巨牛的人工智能教程,分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。平时碎片时间可以当小说看,【点这里可以去膜拜一下大…

算法题目——省份数量(dfs,bfs)

题目链接:leetcode.547省份数量 dfs: 深度优先遍历:递归 思路:读入数据完成后 重点:建立一个数组记录该省份是否访问,新建一个元素记录省份圈的个数 1.对所有省份循环一次,如果该省份未被访问,则进入dfs 2.dfs中,对所有省份循环一遍,如果未被访问且省份index可以到达…

两台思科交换机vlan划分_Cisco交换机Vlan划分及ACL配置详细步骤 | 吴文辉博客

一、开机1、如是新设备,开机需跳过系统默认配置模式,进入手动配置模式。2、进入用户模式,系统提示符为 >,此模式只能查看统计信息,无配置功能。3、用户模式下,输入 enable ,进入特权模式&…

用重构指导Clean Code(二):依恋情结和switch语句

书接上回,我们继续聊如何用重构指导Clean Code。在Clean Code的3.4节中有这样一段代码(代码清单3-4)。(第3章主要讲的是函数,而3.4节讨论的是switch语句。)public Money calculatePay(Employee e) throws I…

算法题目——杨辉三角问题

思路: #include<iostream> #include<cstdio> #include<cstring> #

cascade down_Cascaded CNN 方法寻找人脸关键点

Cascaded CNN 方法寻找人脸关键点论文笔记阅读论文第一阶段阅读论文&#xff0c;大约两天大体阅读完论文 Deep Convolutional Network Cascade for Facial Point Detection。感觉还是比较缺乏论文阅读经验&#xff0c;但是比以前快了很多。主要阅读论文 intro、method 和 model…

了解一下HTTP1.1 Pipelining技术

为什么谈HTTP1.1 Pipelining呢&#xff1f;主要问题根源还是来源于Beetlex参加了techempower的测试。先看一下以下两项测试的结果&#xff1a;以上分别是.net平台的Json和Plaintext的测试结果&#xff0c;其实Plaintext最高能跑700多万RPS已经完全超了对网络IO读写损耗的认知&a…

springboot2 多线程写入数据_解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题...

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":7,"count":7}]},"card":[{"des":"EDAS 是一个应用托管和微服务管理的PaaS平台…

算法题目——子序列和问题(poj-3061)(尺取法)

题目链接:POJ-3061 题意:给定一个序列,使得其和大于或等于S,求最短的子序列长度。 问题分析: 1.首先序列都是正整数,当子序列和大于等于S时,已经没有必要再将右端点继续向右移动。因为再向右移动,序列的长度一定会大于此时的长度 2.所以,当子序列和小于S时,右端点向…

读书 | 数字化转型的道与术(下)

【数字化转型】| 作者 / Edison Zhou这是EdisonTalk的第313篇学习总结 最近在阅读钟华老师的新作《数字化转型的道与术》&#xff0c;记录和总结了一些学习笔记和感想&#xff0c;整理成文分享与你&#xff0c;本文为下半部分&#xff0c;希望能对也在参与数字化转型的各位童鞋…

算法题目——读书知识点统计问题(POJ-3320)(尺取法)

题目链接:poj-3320 问题:杰西卡是一个非常可爱的女孩,受到许多男孩的追捧。最近她有个问题。期末考试快到了,但她几乎没花什么时间。如果她想通过考试,她必须掌握一本厚厚的教科书中包含的所有思想。那本教科书的作者和其他作者一样,对这些观点极为挑剔,因此有些观点被…

aop springboot 传入参数_Springboot添加AOP打印请求参数

1. 引入依赖org.springframework.bootspring-boot-starter-aop2. 写切面切面类需要加Aspect和Component注解package com.test.demo.aspect;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.Pro…

GraphQL:面对复杂类型

GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述&#xff0c;使得客户端能够准确地获得它需要的数据&#xff0c;而且没有任何冗余&#xff0c;也让 API 更容易地随着时间推移而演进&#xff0c…

算法与数据结构——并查集

文章推荐:【算法与数据结构】—— 并查集 例子: 数据结构——最小生成树之克鲁斯卡尔算法(Kruskal) 1.2 并查集思想(重点) 我们可以把每个连通分量看成一个集合,该集合包含了连通分量的所有点。而具体的连通方式无关紧要,好比集合中的元素没有先后顺序之分,只有“属于”…

eclipse 输入卡顿_7个小技巧,解决eclipse卡顿问题

eclipse作为开发工具&#xff0c;每天都要使用&#xff0c;你肯定遇到过eclipse卡到想哭的时刻&#xff0c;严重影响开发效率啊&#xff01;如果内存条不要钱&#xff0c;那就加内存吧&#xff01;一个不够加两个&#xff01;当然这都是玩笑话&#xff0c;如果不花钱也能解决问…

为什么建议学生积极参与开源项目?

喜欢就关注我们吧&#xff01;“ 你参与过开源项目吗&#xff1f;” 随着开源技术对信息产业的积极影响进一步扩大&#xff0c;越来越多的面试官将是否参与开源项目作为考核开发者能力的一项基本指标。对于求职者来说&#xff0c;参与开源能为简历增色不少 &#xff0c;增加赢得…

mysql 左连接 怎么走索引_数据库索引、左连接、右连接、等值连接

在MySQL中&#xff0c;主要有四种类型的索引&#xff0c;分别为&#xff1a;B-Tree索引&#xff0c;Hash索引&#xff0c;Fulltext索引(MyISAM 表)和R-Tree索引&#xff0c;本文讲的是B-Tree索引。一、Mysql索引主要有两种结构&#xff1a;BTree索引和Hash索引(a) Innodb存储引…

微服务技术栈及分享计划

前言上一篇对微服的演变、优缺点进行了概述&#xff0c;对于业务复杂项目&#xff0c;微服务算是比较合适的解决方案&#xff1b;对于咱们开发者来说&#xff0c;有好的解决方案肯定要跟进学习&#xff0c;但不能盲目追崇流行技术&#xff0c;目的还是为了解决问题。这里就把As…