不知不觉,Visual Studio 2019 已经出到 16.8 和 16.9 Preview 了。虽然每次更新都林林总总地一大堆新功能和改进,但关于 XAML 的内容总是,always,每次都只有一点点。其实 Xamarin 相关的内容有在使劲地更新,不过和我做的 WPF/UWP 关系又不大。总算是积少成多,随着 Visual Studio 持续更新,现在 XAML 编辑器的使用体验已经比去年有了很大的改善。这篇文章就来总结下 Visual Studio 2019 发布后 XAML 工具的各个主要改变。
现在,可以使用 XAML 选项卡旁边新的"弹出 XAML"按钮轻松地将 XAML 设计器及其基础 XAML 编辑器拆分为单独的窗口。这时 XAML 设计器将把原本的 XAML 编辑器最小化,并在新的窗口打开一个 XAML 编辑器(这两个 XAML 编辑器将保持实时同步)。虽然是一个很简单的功能,但这个功能对同时使用两个屏幕的开发者十分友好,因为现在终于可以一个屏幕放设计视图一个屏幕放 XAML 编辑器。真不能想象居然等了这么多年才等来这个功能。
IntelliSense 已经过增强,以支持显示 XAML 代码片段,这将适用于内置代码片段以及你手动添加的任何自定义代码片段。这还挺好用的,一些很复杂的绑定现在也可以通过定义代码段来简化了。
可并不是所有 IntelliSense 的改进都是好事。写了十几年 XAML,我的手指都变成 XAML 的形状了,现在突然觉得很不适应。例如下面这个例子,我总是习惯盲打输入 “<Gr空格”来创建一个 Grid
标签,现在被插进来的推荐项打乱了我的习惯。总的来说改进程度和 C# 编辑器还是差了一大截。
现在可以看到 XAML 所设置的颜色了,不必再依赖第三方插件,这对经常需要设计 UI 的开发人员是一个很大的改进。
d: 前缀用于设置设计时的属性值,它只影响设计视图,不会编译到正在运行的应用中。在以前,d: 前缀只支持有限几个功能,例如 d:DataContext
。现在所有内置控件的每一个属性都可以用 d: 前缀设置(将来还可能增加对第三方控件的支持)。
以前意义不明的“编辑并继续”现在更名为简单直接的“热重载”。热重载、实时可视化树和实时属性资源管器是 WPF 开发者不会错过的重要功能,Visual Studio 2019 一直有逐渐改善它们的体验,现在这些功能已经支持 WPF、UWP、Xamarin、WInUI 3 等多个平台。在 Visual Studio 2019 中比较显著的改善是实时可视化树中的“仅我的 XAML”。XAML 的可视化树可能很复杂,很难定位到出问题的 XAML(通常来说,出问题的就是自己写的 XAML)。现在可以通过选项 > 调试 > 热重载>仅在实时可视化树启用“仅限我的 XAML”
设置可以选择是否显示完整的可视化树。
另外现在 Visual Studio 可以通过调试>附加到进程
调试其它程序的实时可视化树和实时属性资源管理器,不过我不记得这是不是 2019 才有的新功能。
其它 UI 上的改善都很明显,这里不着重提出。
即使经验丰富到头发掉光,XAML 的绑定还是和有可能失败。一般来说绑定失败并不会报错,所以开发者很难会注意到隐藏的绑定失败,除非主动查看“输出”窗口的内容。这种情况开发者很可能会忽略这些失败,直到更严重的灾难发生。现在 Visual Studio 新增了 XAML 数据绑定故障检测和诊断功能,如果在调试时遇到绑定失败,In-app toolbar 会出一个红色的图标,点击后可以打开 “XAML 绑定失败”窗口查看详细信息。
最后一个是 XAML 建议的操作窗口,在 XAML 设计器中选中某个元素后,使用此功能可以轻松访问这个元素的主要属性。这个功能有点微妙,一来我还没用惯,而来它支持的 UI 元素也不多(对 WPF 来说也就十几个)所以它的可用性大打折扣。
Visual Studio 将会持续改善,从它路线图来看,XAML 的相关内容真的处于“尚未成功,仍需努力”的状态,可以期待将来 XAML 的开发体验会更上一层楼(可是完全没提到可怜的 Blend)。
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