【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | 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 开发工具新特性的更多相关文章
- 【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序
基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.Ja ...
- 在Visual Studio 2019中开启预览功能
在Visual Studio 2019 菜单 [工具] > [选项] > [环境] 下的预览功能页面焕然一新!我们介绍了预览功能页面,以便您可以轻松找到这些功能并能够控制其启用.新布局提供 ...
- 在Visual Studio 2019中安装Blend 4.5 SDK
Visual Studio 2017安装时可以指定Blend SDK,到Visual Studio 2019时,安装时已经没有这个选项了. 官方提供的只有老版本4.0的安装包.要使用Blend SDK ...
- visual studio 2019 + cmake 实现windows linux跨平台开发环境搭建
visual studio 2019开始支持cmake跨平台开发. 以前cmake项目需要先生成vs项目,然后vs直接使用vs项目开发.现在可以直接用vs2019创建或打开cmake项目. 使用vis ...
- 温故知新,微软官方推荐的Visual Studio源代码管理之Git Ignore清单,开启新项目必备宝书
什么是Git Ignore清单 https://git-scm.com/docs/gitignore 简单来说,在Git进行源代码管理中,我们可以通过建立.gitignore来实现一个忽略的黑名单管理 ...
- visual studio 2019 中初始化 vue.js 项目
vs项目模板,webpack模板的创建方式在vs里创建后,npm install的过程会卡很久,暂时原因不明,感觉应该是文件太多,需要写入太多零碎文件. 试了几种初始化方法,还是用最新cli创建最好, ...
- 在Visual Studio 2019中使用scanf报错C4996解决办法
错误警告信息 错误C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To ...
- [译]C#8.0中一个使接口更加灵活的新特性-默认接口实现
9月份的时候,微软宣布正式发布C#8.0,作为.NET Core 3.0发行版的一部分.C#8.0的新特性之一就是默认接口实现.在本文中,我们将一起来聊聊默认接口实现. 众所周知,对现有应用程序的接口 ...
随机推荐
- 重写(OverRide)/重载(Overload)
方法的重写规则 参数列表必须完全与被重写方法的相同: 返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类(java5 及更早版本返回类型要一样,java7 及更高版本可以不同): ...
- thinkphp5配合datatable插件分页后端处理程序
thinkphp5配合datatable插件分页后端处理程序第一版DataTable.php v.1.0 <?php use think\Db; /** * DataTable.php. */ ...
- Java枚举——枚举的作用、使用方法、使用场景
枚举的定义 枚举关键字enum 枚举类是一种特殊类,它和普通类一样可以使用构造器.定义成员变量和方法,也可以实现多个接口,但不能继承类. 枚举的使用 enum Color { RED, BLUE, G ...
- (二十六)golang--切片
基本介绍: 切片是数组的引用: 切片的使用和数组类似: 切片的长度是可以变化的: 切片的定义 var a []int,注意和数组定义的区别: 切片不仅可以使用len函数,还有cap函数来计算切片的容量 ...
- mysql出现ERROR 1819 (HY000)的解决方法
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements, 出现这个问题怎么办? 为了加强安 ...
- mysql中 drop、truncate和delete的区别
mysql中drop.truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNC ...
- PHP 向数组头部插入数据
PHP 向数组头部插入数据 函数: array_unshift() 示例: $s = array('a' => 0, 'b' => 3); array_unshift($s, '5'); ...
- python day 1 homework 1
作业一要求: 1 输入用户名密码 2 认证成功后显示欢迎信息 3 输错三次后锁定 import os #生成保存用户信息的字典 d_userinfo = {} #保存用户登录字典 input_logi ...
- 记一次YUV图像分析(二)
当你有一帧图像的原始(Raw)数据,不知道是RGB像素图还YUV格式时,可以利用YUV的灰度图成块状能量的特点(这也是为什么YUV格式可以被压缩编码的原因),进行简单的分辨. 当你用hexdump一类 ...
- [ch02-01] 线性反向传播
系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 2.1 线性反向传播 2.1.1 正向计算的实例 假设我 ...