原文 | Dmitry

翻译 | 郑子铭

自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能。在本周的 Visual Studio 2019 版本 16.4 和 16.5 Preview 1中,我们希望借此机会回顾一下全年的新变化。如果您错过了我们以前的版本,或者只是没有机会赶上,那么此博客文章将是您可以看到我们在整个2019年所做的每项重大改进的地方。

XAML实时调试工具:

XAML C# Edit & Continue 现在被称为 XAML Hot Reload (v16.2):

现在将 WPF / UWP 的 XAML C# Edit & Continue 称为 XAML Hot Reload,此新名称旨在更好地与该功能的实际工作方式保持一致(因为进行XAML编辑后无需暂停)并与 Xamarin.Forms 中的相似功能匹配。

XAML Hot Reload 可用/不可用 (v16.2):

应用内工具栏已更新,以指示 XAML Hot Reload 是否可用,并链接到相关文档。在此改进之前,如果不先尝试使用该功能,客户将无法知道 XAML Hot Reload 是否正在工作,这会引起混乱。

应用内工具栏现已主题化 (v16.2):

现在,根据Visual Studio选定的主题颜色设置应用内工具栏的样式。

应用内工具栏现在的主题(v16.2)

应用内工具栏元素选择行为更改:

我们更新了应用程序内工具栏功能“启用选择”的行为,用于在运行的应用程序中选择元素。进行此更改后,选择器将在选择第一个元素后停止选择元素。这使其与类似的工具(例如F12浏览器工具)保持一致,并且基于客户的反馈。

XAML Hot Reload 现在支持 x:bind(UWP)– v16.0:

XAML Hot Reload(以前称为“ XAML Edit & Continue ”)现在支持编辑使用 x:bind 创建的数据绑定,以绑定包含公共属性,元素名称,索引属性路径(集合),附加属性和强制转换属性的路径。不支持其他更改。最低和最高版本针对 Windows 10 SDK 版本1809(内部版本10.0.17763)或更高版本的任何应用程序均可使用此增强功能。

为 WPF 资源字典更改(v16.3)添加了 XAML Hot Reload 支持:

XAML Hot Reload 现在支持更新 WPF 资源字典以在应用程序中进行实时更新。以前,此功能仅适用于通用 Windows 平台(UWP),但现在支持 WPF .NET Framework,WPF .NET Core 和 UWP 应用程序。支持的操作包括添加新的“资源”部分定义以及添加,删除和更新资源的新/现有部分。

实时可视化树中的Just My XAML:

实时可视化树是一项功能,当 UWP 和 WPF 开发人员在调试模式下运行其应用程序时,它们是可用的,并且是与 XAML Hot Reload 相关的实时编辑工具的一部分。以前,该功能会显示附件中正在运行的应用程序的完整实时可视化树,而无法通过过滤器仅查看您在应用程序中编写的 XAML。这带来了非常嘈杂的体验,并且根据客户的反馈,我们添加了一个名为“ Just My XAML”的新默认值,该默认值将树限制为仅在您的应用程序中编写的控件。虽然这是新的默认设置,但仍然可以通过实时可视化树本身内的按钮或通过新设置(位于:选项>调试>常规>启用我的XAML)返回到以前的行为。

实时可视化树中的Just My XAML

可移动的应用内工具栏(v16.3):

应用程序内工具栏已得到增强,可在正在运行的 WPF / UWP 应用程序中移动,从而使开发人员能够在应用程序中向左或向右拖动它以解除阻止应用程序 UI。请注意,工具栏移动到的位置不会在会话之间存储,并且在您的应用重新启动时会返回到默认位置。

可移动的应用内工具栏(v16.3)

XAML绑定失败面板(独立的 VSIX 早期 alpha 预览):

为了在开发人员的应用程序中发生数据绑定失败时为开发人员提供帮助,我们在开发中提供了一项新功能,该功能为 Visual Studio 带来了专门的 XAML 绑定失败面板。尽管此功能最终将对所有 XAML 开发人员(WPF,UWP和Xamarin.Forms)都起作用,但新面板将使为那些构建WPF应用程序的客户更容易发现绑定失败。

XAML绑定失败面板(独立的 VSIX 早期 alpha 预览)

此功能意味着开发人员将不再需要使用输出窗口来检测绑定失败并使新开发者更容易发现它们。

此功能仍处于开发的早期阶段,Visual Studio 中未包含该功能,如果您希望立即开始对其进行测试,则可以通过下载我们的 alpha VSIX 来进行。

XAML设计器

WPF Designer 现在完全适用于 WPF .NET Core 项目(v16.3):

现在,所有客户都可以普遍使用 (GA)WPF .NET Core 应用程序的 XAML 设计器,而无需预览功能标志。WPF .NET Core 应用程序的 XAML 设计器在某些行为和功能上与 WPF .NET Framework Designer 略有不同,请注意,这是设计使然。鉴于两者之间的差异,我们希望鼓励客户报告使用 Visual Studio 反馈功能可能遇到的任何问题或限制。

WPF Designer 现在完全适用于 WPF .NET Core 项目(v16.3)

XAML 设计器的缩放/位置现在默认为全部适合(v16.4):

根据客户的反馈,我们重新评估了打开 XAML 窗口/页面/控件/等时发生的默认 XAML 设计器缩放行为。以前的经验丰富的用户在 Visual Studio 会话中存储了每个文件的缩放级别和位置,这在客户经过一段时间后返回文件时引起混乱。从此版本开始,我们将仅在活动会话的持续时间内存储缩放级别和位置,并在 Visual Studio 重新启动后恢复为“完全适合”默认值。

创建数据绑定对话框(v16.4):

通过 XAML 设计器和属性浏览器的右键单击,Visual Studio有一个可供 WPF .NET Framework 开发人员使用的数据绑定对话框,并且以前也可供 UWP 开发人员使用此对话框。在此版本中,我们将这种经验带回 UWP 开发人员,并增加了对 WPF .NET Core 应用程序的支持。此功能仍在开发中,并将在将来继续改进,以恢复与 .NET Framework 对话框功能的功能奇偶性。

XAML设计器建议的操作(v16.5预览):

在此版本中,我们提供了一个名为“建议的操作”的新预览功能,当在 XAML 设计器中选择控件时,可以轻松访问常用属性。要使用此功能,请先通过“选项”>“预览功能”>“ XAML建议的操作”将其启用。启用后,请单击受支持的控件,然后使用灯泡展开并与“建议操作”用户界面进行交互。在此版本中,受支持的控件包括:边框,按钮,画布,复选框,组合框,网格,图像,标签,列表框,ListView,StackP anel,TextBlock,TextBox。在预览时,此功能也仅适用于 WPF .NET Core 应用程序,不支持扩展性,也不具有完整的功能。

XAML设计器建议的操作(v16.5预览)
(请注意,此功能正在积极开发中,在最终发布之前可能会发生重大变化,因此您的反馈至关重要,我们希望通过 Visual Studio 反馈工具来听取您的意见。)

XAML编辑器

XAML(v16.0)的智能感知支持:

IntelliCode 是一种AI辅助的 IntelliSense,适用于多种语言,可预测开发人员最可能使用的正确 API,而不仅仅是字母顺序的成员列表。IntelliCode 支持C#,C ++,XAML等语言。

#regions 智能感知(v16.4)的改进:

从 Visual Studio 2015 开始,WPF 和 UWP XAML 开发人员可以使用 #region 支持,Xamarin.Forms 最近也可以使用。在此版本中,我们已修复了 IntelliSense 错误,此修复程序中 #regions 现在将在您开始输入<!时正确显示。

XAML 智能感知(v16.4)中的代码段:

增强了 IntelliSense 的功能,以支持显示 XAML 代码段,这对于内置代码段和您手动添加的任何自定义代码段均适用。从此版本开始,我们还包括一些现成的 XAML 代码片段:#region,Column 定义,Row 定义,Setter和Tag。

弹出 XAML 编辑器作为与设计器(v16.4)分开的单独窗口:

现在,可以使用 XAML 选项卡旁边的新的 Popup XAML 按钮轻松地将 XAML 设计器及其基础 XAML 编辑器拆分为单独的窗口。单击后,XAML 设计器将最小化其附加的 XAML 选项卡,并仅针对 XAML 编辑器视图弹出一个新窗口。您可以将此新窗口移动到 Visual Studio 中的任何显示或选项卡组。请注意,仍然可以展开原始 XAML 视图,但是无论同一个文件的所有 XAML 视图将保持实时同步。

弹出 XAML 编辑器作为与设计器(v16.4)分开的单独窗口

显示引用程序集的资源(v16.4):

XAML IntelliSense 已更新为支持显示来自 WPF Framework 和 WPF .NET Core 项目的引用程序集中的 XAML 资源(当源不可用时)。

XAML Islands:

改进的 XAML孤岛 支持(v16.4):

我们增加了对 Windows 窗体和 WPF .NET Core 3 应用程序的 XAML孤岛 场景的支持,从而使向这些应用程序添加 UWP XAML 控件变得更加容易。通过这些改进,.NET Core 3 项目可以引用包含自定义 UWP XAML 控件的 UWP 项目。Windows 社区工具包 v6(Microsoft.Toolkit.Wpf.UI.XamlHost v6.0)中附带的 WindowsXamlHost 控件可以使用这些自定义控件。您还可以使用 Windows 应用程序打包项目为具有 Islands 的 .NET Core 3 生成 MSIX。要了解如何入门,请访问我们的文档

资源和模板

合并资源字典:

现在,可以使用解决方案资源管理器提供的新功能,轻松地将 UWP / WPF 项目中的现有资源词典与任何有效的 XAML 文件合并。只需打开要在其中添加 merge 语句的 XAML 文件,然后找到要合并的文件,然后在解决方案资源管理器中右键单击该文件即可。在上下文菜单中,选择“将资源字典合并到活动窗口中”选项,该选项将添加带有路径的正确合并 XAML。

合并资源字典

“编辑模板”现在可与第三方控件中的控件一起使用:

即使“编辑模板”现在不是源代码解决方案的一部分,也可以创建控件模板的副本。进行此更改后,“编辑模板”功能现在将可用,并且可以像现在可用源的第一方元素一样使用。请注意,此功能适用于第三方控制库和没有源的第一方。

包装和签名

UWP应用(v16.3)的签名证书:

通过清单设计器恢复了创建和导入签名证书文件(.pfx)的功能。我们还引入了通过打包向导创建和导入签名证书的功能,以简化签名过程。
009
UWP应用(v16.3)的签名证书

相关新闻

最近,还有其他与桌面开发人员相关的公告,如果您错过了其中任何一项,请参阅以下综合列表:

Visual Studio App Center 现在支持 .NET 桌面应用程序

包括 WinForms,WPF 和 UWP。这包括由 .NET Framework 或 .NET Core 支持的应用程序,支持的功能包括部署,运行状况监视(崩溃报告)和实时洞察(自定义遥测)。有关详细信息,请查看他们最近的博客文章

Windows 已宣布 WinUI 3

同时发布了 Alpha 版和长期路线图。使用 WinUI 3,开发人员将能够使用现代 XAML 的功能来构建由 .NET Core 或 C ++ 支持的桌面和 UWP 应用程序。要了解所有详细信息,请参阅其路线图

Windows UI 库 2.3 现在可用

它将继续为UWP开发人员添加更多控件。有关所有详细信息,请参见其发行说明

Ignite 2019 XAML 会议

现在可以免费观看点播视频,如果您今年错过了 Ignite,那么值得一试。

总结

这些功能只是我们一直在努力的一部分,还有许多仍在开发中,我们希望在准备就绪时与您分享更多信息。

目前,由于上述许多项目都是根据客户的意见创建的,因此请保持您的反馈意见,因为您的意见是我们改进Visual Studio的关键部分。

最后,您还可以在我们最新的 Visual Studio Toolbox 视频中看到上述功能的演示。

原文:What’s new in XAML developer tools in Visual Studio 2019 for WPF & UWP

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。

【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性的更多相关文章

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

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

  2. ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序

    基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.Ja ...

  3. 在Visual Studio 2019中开启预览功能

    在Visual Studio 2019 菜单 [工具] > [选项] > [环境] 下的预览功能页面焕然一新!我们介绍了预览功能页面,以便您可以轻松找到这些功能并能够控制其启用.新布局提供 ...

  4. 在Visual Studio 2019中安装Blend 4.5 SDK

    Visual Studio 2017安装时可以指定Blend SDK,到Visual Studio 2019时,安装时已经没有这个选项了. 官方提供的只有老版本4.0的安装包.要使用Blend SDK ...

  5. visual studio 2019 + cmake 实现windows linux跨平台开发环境搭建

    visual studio 2019开始支持cmake跨平台开发. 以前cmake项目需要先生成vs项目,然后vs直接使用vs项目开发.现在可以直接用vs2019创建或打开cmake项目. 使用vis ...

  6. [译]C#8.0中一个使接口更加灵活的新特性-默认接口实现

    9月份的时候,微软宣布正式发布C#8.0,作为.NET Core 3.0发行版的一部分.C#8.0的新特性之一就是默认接口实现.在本文中,我们将一起来聊聊默认接口实现. 众所周知,对现有应用程序的接口 ...

  7. visual studio 2019 中初始化 vue.js 项目

    vs项目模板,webpack模板的创建方式在vs里创建后,npm install的过程会卡很久,暂时原因不明,感觉应该是文件太多,需要写入太多零碎文件. 试了几种初始化方法,还是用最新cli创建最好, ...

  8. 在Visual Studio 2019中使用scanf报错C4996解决办法

    错误警告信息 错误C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To ...

  9. [翻译] 使用 Visual Studio 2019 来提高每个开发人员的工作效率

    [翻译] 使用 Visual Studio 2019 来提高每个开发人员的工作效率 原文: Making every developer more productive with Visual Stu ...

随机推荐

  1. Uber Go 语言编码规范

    Uber Go 语言编码规范 Uber 是一家美国硅谷的科技公司,也是 Go 语言的早期 adopter.其开源了很多 golang 项目,诸如被 Gopher 圈熟知的 zap.jaeger 等.2 ...

  2. jade 学习笔记 - gulp 自动编译

    实时监控   jade -P -w .\test1.jade sublime 分栏,可以看到实时修改情况     1. 元素写法 doctype html <!--[if IE8]>< ...

  3. iOS定位--CoreLocation

    一:导入框架 #import <CoreLocation/CoreLocation.h> 二:设置代理及属性 <CLLocationManagerDelegate> @prop ...

  4. 通过阿里云的IOT平台控制ESP8266

    通过阿里云的IOT平台控制ESP8266 #include <ESP8266WiFi.h> /* 依赖 PubSubClient 2.4.0 */ #include <PubSubC ...

  5. pat 1050 String Subtraction(20 分)

    1050 String Subtraction(20 分) Given two strings S​1​​ and S​2​​, S=S​1​​−S​2​​ is defined to be the ...

  6. windows 通过appache链接cgi程序

    #!D:\Python27\ print 'Content-type: text/plain' print print 'Hello, world' 出现错误 The server encounter ...

  7. less使用入门

    概要 为什么要有预处理CSS CSS基本上是设计师的工具,不是程序员的工具.在程序员的眼里,CSS是很头痛的事情,它并不像其它程序语言,比如说PHP.Javascript等等,有自己的变量.常量.条件 ...

  8. 第一解出的pwn题

    虽然题目不难,但是 是我第一次做出的pwn题,得写下. __int64 sub_4007E6() { char s1; // [sp+0h] [bp-30h]@1 memset(&s1, , ...

  9. Linux -- 进程管理之僵尸进程

    UNIX 存在一种机制:在每个进程退出的同时,操作系统释放该进程所有资源,但仍然保留一定的信息(PID / Status / runtime),直到父进程执行 wait() / waitpid(),以 ...

  10. js模块导入/导出大全

    说明 module.exports与exports是CommonJS的规范 export与export default是es6规范 require 是 AMD规范引入方式 import是es6的一个语 ...