不知不觉,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 工具的改进的更多相关文章

  1. Visual Studio 2019 发布活动 - 2019 年 4 月 2 日

    Visual Studio 2019 发布活动 2019 年 4 月 2 日,星期二 | 上午 9:00 (PT) 围观: https://visualstudio.microsoft.com/zh- ...

  2. Visual Studio 2019 XAML Hot Reload功能介绍

    Visual Studio 2019提供了XAML Hot Reload功能,这个功能可以让WPF程序运行以后仍然可以修改XAML代码,并实时显示. XAML Hot Reload功能在Blend F ...

  3. Visual Studio 2019 正式发布

    原文链接: https://www.oschina.net/news/105629/vs2019-general-availability 如约而至,微软已于今天推出 Visual Studio 20 ...

  4. 【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性

    原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...

  5. 【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性

    原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...

  6. [翻译] Visual Studio 2019 RC版发布

    [翻译] Visual Studio 2019 RC版发布 原文: Visual Studio 2019 Release Candidate (RC) now available 今天,我们将分享 V ...

  7. Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器

    Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器的方式 在开发完项目之后,我们需要把开发的项目发布到指定的服务器上,有两种方式,如下 1.把项目发布成文件系 ...

  8. 强大的VS插件CodeRush发布v19.1.4|支持Visual Studio 2019

    CodeRush是一个强大的Visual Studio .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验. [CodeRush for Visual Studio v19.1. ...

  9. visual studio 2019工具里添加开发中命令提示符的方法

    最新新装了visual studio 2019,发现默认的没有开发者命令提示符 现将添加步骤描述如下: 从VS2019菜单选择"Tools",然后选择"外部工具" ...

随机推荐

  1. CTF-lottery[git文件泄露利用+PHP弱类型]

    知识点:PHP弱类型 .git文件泄露 玩攻防世界 遇到一个题lottery  进去看看  分析玩法 我们发现 进入登陆用户都是初始值 金钱是20  彩票号码必须输入7位 然后看你输入的彩票号码有多少 ...

  2. 企业级工作流解决方案(十一)--集成Abp和ng-alain--权限系统服务

    权限系统主要定义为管理员增删改查权限数据,直接读取数据库,权限系统服务主要定义为供其他系统调用的权限验证接口,定义为两个不同的微服务. 权限系统有一个特点,数据变动比较小,数据量本身并不是很大,访问量 ...

  3. 追踪聚光特效怎么实现,有Vegas就够了

    舞台聚光灯大家一定都不陌生,在电视上某些颁奖活动里,主持人的进场一定伴随着舞台灯光的聚光效果.随着主持人的移动,灯光也随之移动.这里的舞台灯光就起到了一个追踪聚光的效果. Vegas Pro 16 增 ...

  4. guitar pro系列教程(十四):Guitar Pro教程之创建新乐谱后的设置

    前面的章节我们有对Guitar Pro的单个功能作介绍,对于初学作曲,且又是吉他初学者的朋友们来说,学完这些功能介绍,自己还不能融会贯通起来,创建了一个新的乐谱后,但是看起来还不是很满意,今天我们就创 ...

  5. Java Bean拷贝工具Orika原理解析

    最近面试被问及对象拷贝怎样才能高效,实际上问的就是Orika或者BeanCopier的原理.由于网上对Orika原理的解析并不太多-因此本文重点讲解一下Orika的原理.(Orika是基于JavaBe ...

  6. Java蓝桥杯——排列组合

    排列组合介绍 排列,就是指从给定n个数的元素中取出指定m个数的元素,进行排序. 组合,则是指从给定n个数的元素中仅仅取出指定m个数的元素,不考虑排序. 全排列(permutation) 以数字为例,全 ...

  7. Hibernate的配置跟简单创建一个表并插入一条数据

    首先官网下载一个hibernate的架包,由于时间关系,博主已经分享到了百度网盘:https://pan.baidu.com/s/1Mw0Og3EKnouf84Njz9UicQ,提取码lens Hib ...

  8. 40 张图带你搞懂 TCP 和 UDP

    前言 欢迎阅读「程序员cxuan」 的文章,从今往后,你就是我的读者了. 我的 github bestJavaer 已经收录此文章,目录在 https://github.com/crisxuan/be ...

  9. Spring与Web环境集成

    1. Spring与Web环境集成 1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(sprin ...

  10. 「考试」CSP-S 2020

    乱扯 爆炸的过程是这样的 写了\(2.5h\)的\(T1\)过不去大样例,自闭了 决定调\(T2\)然后过了样例但事实上写的完全是假的 这个时候突然\(T1\)灵光一闪就没再看\(T2\)了 然后就一 ...