总结 Visual Studio 2019 发布以来 XAML 工具的改进
不知不觉,Visual Studio 2019 已经出到 16.8 和 16.9 Preview 了。虽然每次更新都林林总总地一大堆新功能和改进,但关于 XAML 的内容总是,always,每次都只有一点点。其实 Xamarin 相关的内容有在使劲地更新,不过和我做的 WPF/UWP 关系又不大。总算是积少成多,随着 Visual Studio 持续更新,现在 XAML 编辑器的使用体验已经比去年有了很大的改善。这篇文章就来总结下 Visual Studio 2019 发布后 XAML 工具的各个主要改变。
1.弹出 XAML 编辑器作为设计器的单独窗口

现在,可以使用 XAML 选项卡旁边新的"弹出 XAML"按钮轻松地将 XAML 设计器及其基础 XAML 编辑器拆分为单独的窗口。这时 XAML 设计器将把原本的 XAML 编辑器最小化,并在新的窗口打开一个 XAML 编辑器(这两个 XAML 编辑器将保持实时同步)。虽然是一个很简单的功能,但这个功能对同时使用两个屏幕的开发者十分友好,因为现在终于可以一个屏幕放设计视图一个屏幕放 XAML 编辑器。真不能想象居然等了这么多年才等来这个功能。
2. XAML IntelliSense 改进,以及支持代码段
IntelliSense 已经过增强,以支持显示 XAML 代码片段,这将适用于内置代码片段以及你手动添加的任何自定义代码片段。这还挺好用的,一些很复杂的绑定现在也可以通过定义代码段来简化了。

可并不是所有 IntelliSense 的改进都是好事。写了十几年 XAML,我的手指都变成 XAML 的形状了,现在突然觉得很不适应。例如下面这个例子,我总是习惯盲打输入 “<Gr空格”来创建一个 Grid 标签,现在被插进来的推荐项打乱了我的习惯。总的来说改进程度和 C# 编辑器还是查了一大截。

3. 颜色可视化工具
现在可以看到 XAML 所设置的颜色了,不必再依赖第三方插件,这对经常需要设计 UI 的开发人员是一个很大的改进。

4. 扩展了对 WPF 和 UWP 的设计时数据支持
d: 前缀用于设置设计时的属性值,它只影响设计视图,不会编译到正在运行的应用中。在以前,d: 前缀只支持有限几个功能,例如 d:DataContext。现在所有内置控件的每一个属性都可以用 d: 前缀设置(将来还可能增加对第三杠控件的支持)。

5. XAML 热重载/实时可视化树/实时属性资源管器
以前意义不明的“编辑并继续”现在更名为简单直接的“热重载”。热重载、实时可视化树和实时属性资源管器是 WPF 开发者不会错过的重要功能,Visual Studio 2019 一直有逐渐改善它们的体验,现在这些功能已经支持 WPF、UWP、Xamarin、WInUI 3 等多个平台。在 Visual Studio 2019 中比较显著的改善是实时可视化树中的“仅我的 XAML”。XAML 的可视化树可能很复杂,很难定位到出问题的 XAML(通常来说,出问题的就是自己写的 XAML)。现在可以通过选项 > 调试 > 热重载>仅在实时可视化树启用“仅限我的 XAML”设置可以选择是否显示完整的可视化树。

另外现在 Visual Studio 可以通过调试>附加到进程调试其它程序的实时可视化树和实时属性资源管理器,不过我不记得这是不是 2019 才有的新功能。
其它 UI 上的改善都很明显,这里不着重提出。
6 .XAML 绑定失败诊断
即使经验丰富到头发掉光,XAML 的绑定还是和有可能失败。一般来说绑定失败并不会报错,所以开发者很难会注意到隐藏的绑定失败,除非主动查看“输出”窗口的内容。这种情况开发者很可能会忽略这些失败,直到更严重的灾难发生。现在 Visual Studio 新增了 XAML 数据绑定故障检测和诊断功能,如果在调试时遇到绑定失败,In-app toolbar 会出一个红色的图标,点击后可以打开 “XAML 绑定失败”窗口查看详细信息。


7. XAML 设计器建议的操作
最后一个是 XAML 建议的操作窗口,在 XAML 设计器中选中某个元素后,使用此功能可以轻松访问这个元素的主要属性。这个功能有点微妙,一来我还没用惯,而来它支持的 UI 元素也不多(对 WPF 来说也就十几个)所以它的可用性大打折扣。

8. 最后

Visual Studio 将会持续改善,从它路线图来看,XAML 的相关内容真的处于“尚未成功,仍需努力”的状态,可以期待将来 XAML 的开发体验会更上一层楼(可是完全没提到可怜的 Blend)。
9. 参考
Visual Studio 2019 当前发行说明:
https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes
Visual Studio 2019 预览发行说明:
https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes-preview
Visual Studio 2019 开发人员社区:
https://developercommunity.visualstudio.com/topics/visual+studio+2019.html
Visual Studio 发行节奏:
https://docs.microsoft.com/zh-cn/visualstudio/productinfo/release-rhythm
Visual Studio Roadmap:
https://docs.microsoft.com/zh-cn/visualstudio/productinfo/vs-roadmap
DevBlogs - Microsoft Developer Blogs:
https://devblogs.microsoft.com
总结 Visual Studio 2019 发布以来 XAML 工具的改进的更多相关文章
- Visual Studio 2019 发布活动 - 2019 年 4 月 2 日
Visual Studio 2019 发布活动 2019 年 4 月 2 日,星期二 | 上午 9:00 (PT) 围观: https://visualstudio.microsoft.com/zh- ...
- Visual Studio 2019 XAML Hot Reload功能介绍
Visual Studio 2019提供了XAML Hot Reload功能,这个功能可以让WPF程序运行以后仍然可以修改XAML代码,并实时显示. XAML Hot Reload功能在Blend F ...
- Visual Studio 2019 正式发布
原文链接: https://www.oschina.net/news/105629/vs2019-general-availability 如约而至,微软已于今天推出 Visual Studio 20 ...
- 【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- 【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- [翻译] Visual Studio 2019 RC版发布
[翻译] Visual Studio 2019 RC版发布 原文: Visual Studio 2019 Release Candidate (RC) now available 今天,我们将分享 V ...
- Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器
Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器的方式 在开发完项目之后,我们需要把开发的项目发布到指定的服务器上,有两种方式,如下 1.把项目发布成文件系 ...
- 强大的VS插件CodeRush发布v19.1.4|支持Visual Studio 2019
CodeRush是一个强大的Visual Studio .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验. [CodeRush for Visual Studio v19.1. ...
- visual studio 2019工具里添加开发中命令提示符的方法
最新新装了visual studio 2019,发现默认的没有开发者命令提示符 现将添加步骤描述如下: 从VS2019菜单选择"Tools",然后选择"外部工具" ...
随机推荐
- 【进阶之路】Mybatis-Plus中乐观锁@version注解的问题与解决方案
大家好,我是练习java两年半时间的南橘,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西.知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了 ...
- FL Studio进行侧链的三种方式(下)
在上篇教程中我们了解了在FL Studio中进行侧链的第一种方式,今天我们就来继续带领大家了解进行侧链的另外两种方式. 如何使用 Fruity Peak Controller(果味峰值控制器)在FL ...
- day98:MoFang:服务端项目搭建
目录 1.准备工作 2.创建项目启动文件manage.py 3.构建全局初始化函数并在函数内创建app应用对象 4.通过终端脚本启动项目 5.项目加载配置 6.数据库初始化 1.SQLAlchemy初 ...
- 一套标准的ASP.NET Core容器化应用日志收集分析方案
讲故事 关注我公众号的朋友,应该知道我写了一些云原生应用收集和分析相关的文章,其中内容大多聚焦某个具体的组件: 超级有用的TraceId,快点用起来吧! 如何利用NLog输出结构化日志,并在Kiban ...
- 三. Vue组件化
1. 认识组件化 1.1 什么是组件化 人面对复杂问题的处理方式 任何一个人处理信息的逻辑能力都是有限的,所以当面对一个非常复杂的问题时我们不太可能一次性搞定一大堆的内容. 但是我们人有一种天生的能力 ...
- 一口气带你读懂80年IT发展史
计算机的发展历史有多长?真正意义上的计算机诞生,距今也只有80多年的时间.80年,对于每一个人来说,是很长的时间,但对于整个历史来说,只是短短的一瞬间.这八十多年只是整段历史中的一粒尘埃罢了,但却对这 ...
- GitHub 访问不顺怎么办?在线等,急
在日常的工作生活学习中 经常会遇到无法访问 GitHub.访问不稳定等等突发情况 这不,今天群里的朋友们又双叒叕遇到了问题-- 为方便用户从 GitHub 快速备份开源仓库,稳定访问,CODING 现 ...
- 在Mac下配置JDK
1.下载JDK,例JDK8U144 下载地址https://pan.baidu.com/s/1upjecBzTIMnyz0JmdkYprQ 2.安装 安装后配置JDK环境变量 cd ~ open .b ...
- day1(ModelViewSet序列化限流排序)
1.DRF初始化 1.认证 2.权限 3.限流 4.序列化 5.分页 6.版本 7.过滤 8.排序 1.1安装DjangoRestFramework pip install djangoresfra ...
- PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中的topLevelItem、indexOfTopLevelItem和takeTopLevelItem方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 获取指定位置顶层项 树型部件QTreeWidget中,通过topLevelItem方法根据位置索引取 ...