原文 | 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

广州.NET俱乐部

立足于广州辐射大湾区的.NET技术俱乐部,旨在推动大湾区.NET技术的向前发展与交流。

QQ群:651477282

欢迎各位技术专家以及热爱分享技术文章的同学联系我们 gz.dotnet.club@hotmail.com

原文版权归作者和博客园共有,转载请联系原文作者。

原文链接:【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性

【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性的更多相关文章

  1. 【译】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. 温故知新,微软官方推荐的Visual Studio源代码管理之Git Ignore清单,开启新项目必备宝书

    什么是Git Ignore清单 https://git-scm.com/docs/gitignore 简单来说,在Git进行源代码管理中,我们可以通过建立.gitignore来实现一个忽略的黑名单管理 ...

  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. [译]C#8.0中一个使接口更加灵活的新特性-默认接口实现

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

随机推荐

  1. SpringBoot 源码解析 (三)----- Spring Boot 精髓:启动时初始化数据

    在我们用 springboot 搭建项目的时候,有时候会碰到在项目启动时初始化一些操作的需求 ,针对这种需求 spring boot为我们提供了以下几种方案供我们选择: ApplicationRunn ...

  2. C#:转义字符 \n 和 \r 的区别

    1.\n,换行符,作用是换行符之后的字符换到下一行: 例如:1234/n567    得出的结果是1234 567 2.而\r,回车符,作用是回车符之后的字符会回到当前行的最前面,把回车符之前的字符覆 ...

  3. Serlvet之cookie和session学习

    HTTP 协议 Web通信需要一种语言,就像中国人讲中文,欧美说英文,Web使用的HTTP协议,也叫超文本协议. 使用HTTP协议的人分为两类:客户端和服务端.请求资源的角色是客户端,提供资源的是服务 ...

  4. C语言|博客作业01

    2.1你对计算机科学与技术的了解是怎样? 一开始,我并不知道计科和软件的区别,甚至以为这是一种专业的两种叫法.进了大学之后,才一下子懂了,计科就是计科,它和软件虽有相同之处,但是终究是不一样的.计科涉 ...

  5. PHP中的服务容器与依赖注入的思想

    依赖注入 当A类需要依赖于B类,也就是说需要在A类中实例化B类的对象来使用时候,如果B类中的功能发生改变,也会导致A类中使用B类的地方也要跟着修改,导致A类与B类高耦合.这个时候解决方式是,A类应该去 ...

  6. 20191031-6 beta week 1/2 Scrum立会报告+燃尽图 04

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9914 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩昊 ...

  7. C++学习第一天(打卡)

    C++和C最大的区别可能就是添加了面向对象的编程. using namespace std 是其中oop的一个特性. using namespace std 可以使程序使用std名称空间里面的定义. ...

  8. Rust 入门 (三)_上

    这部分我们学习 rust 语言的 变量.数据类型.函数.注释.流程控制 这五个方面的内容.本文我们介绍前两个内容,下一篇文章介绍后三个内容. 变量 默认情况下,rust 语言中声明的变量是不可变的,比 ...

  9. Java流程控制之(三)嵌套

    目录 嵌套循环 for循环嵌套 while循环嵌套 总结 之前谈到各种循环结构,有for循环啊,有while循环啊,可以完成不断重复的动作,相当方便.那么如果好多个循环结合再一次,又是如何实现效果的呢 ...

  10. 2019-11-26:密码学基础知识,csrf防御

    信息安全的基础是数学--->密码算法--->安全协议(ssl VPN)-->应用(证书 PKI)密码学入门密码编码学:研究加解密算法的学科密码分析学:研究破译密码算法的学科 加解密分 ...