.NET 6 Preview 7 现已公布啦,咱们为 .NET 多平台应用程序 UI (MAUI) 引入了所有的新布局。这是性能和可靠性的重大变动。咱们很快乐咱们还减少了一些对于accessibility方面的基于新的SemanticService、字体缩放选项和对Xamarin.Forms 成果的兼容性的性能。

新的布局

到目前为止,你在.NET MAUI中应用的布局都是Xamarin.Forms布局,他们晓得如何调整渲染器和新的基于控件的处理程序的大小和地位。咱们开始采纳这种办法是为了疾速将 UI 放在屏幕上,并集中精力实现咱们的 UI 40 控件库,并证实咱们可能与从 Xamarin.Forms 迁徙的我的项目兼容。与此同时,咱们始终在基于新的 LayoutManager 办法构建优化布局,利用咱们 7 年的 Xamarin.Form 布局教训来优化一致性、性能和可维护性。

在这个预览中,旧的布局当初只能在Microsoft.Maui.Controls.Compatibility命名空间中找到,而新的布局默认是启用的:

  • 网格布局
  • 弹性布局
  • 堆栈布局

    程度堆栈布局
    垂直堆栈布局

堆栈布局当初包装了两个布局,侧重于程度和垂直方向。咱们建议您抉择一个适宜您的布局须要。堆栈布局依然有一个您能够设置的方向属性,在某些状况下,当你的自适应布局依据屏幕大小或设施习惯改变方向时,这是必要的。

每个布局都有一个相应的布局管理器负责测量和定位视图。Measure办法承受高度和宽度的限度,并负责测量所有布局的子元素。而后,ArrangeChildren性能依据布局规定设置每个视图的大小和地位。对于有些状况,您能够笼罩布局的CreateLayoutManager办法,以提供ILayoutManager接口的自定义实现。

您会留神到的即时更新之一是调整了这些布局上的默认间距值:0。如果您应用过旧版布局,那么您曾经晓得之前在那里设置的各种不同的任意值。零设定了更明确的冀望,并指引您去设置更满足需要的值。为不便起见,请在全局款式中设置这些起始值:

<ResourceDictionary>    <Style TargetType="StackLayout">        <Setter Property="Spacing" Value="6"/></Style>    <Style TargetType="Grid">        <Setter Property="ColumnSpacing" Value="6"/>        <Setter Property="RowSpacing" Value="6"/></Style></ResourceDictionary>

相对布局绝对布局当初只存在于兼容性命名空间中,咱们建议您认真思考是否真的须要应用它们。在可能的状况下,应用下面列出的布局之一。同时,您能够通过增加新命名空间并为 XAML 援用增加前缀来更新代码以应用它们:

<ContentPage    xmlns:cmp="clr-namespace:Microsoft.Maui.Controls.Compatibility;assembly=Microsoft.Maui.Controls"    ...    >    <cmp:AbsoluteLayout>        ...    </cmp:AbsoluteLayout></ContentPage>

.NET 降级助手正在针对所有这些更改进行更新,如果在降级过程中没有为您解决,咱们将尽最大致力领导您实现这些更改。

在接下来的冲刺阶段,咱们将重点关注改良这些新布局,因而请查看它们并记录您在尝试应用它们时察看到的任何问题

网格布局:
https://docs.microsoft.com/zh...
弹性布局:
https://docs.microsoft.com/zh...
堆栈布局:
https://docs.microsoft.com/zh...
相对布局:
https://docs.microsoft.com/zh...
绝对布局:
https://docs.microsoft.com/zh...
所有这些更改进行更新:
https://github.com/dotnet/upg...
记录您在尝试应用它们时察看到的任何问题:
https://github.com/dotnet/mau...

可拜访性更改和改良

咱们每个月都会与来自不同公司的几位开发人员会面,这些公司在交付可能满足最高可拜访性评级的应用程序方面投入了大量资金。通过这些会议,咱们对可拜访性反对做了一些扭转和减少,使每个人都能更容易地生产可拜访性应用程序。

1.TabIndex 和 IsTabStop 属性已移除

Xamarin.Forms 中引入了 TabIndex 和 IsTabStop 属性,以帮忙开发人员管制屏幕阅读器读取 UI 元素的程序。在实践中,他们最终会让人感到困惑并且无奈满足这种需要。在 .NET MAUI 中,咱们倡议采纳一种三思而行的设计办法,依照您心愿的形式来排列您的UI,而不是寻找编程形式来操作您的界面构造。对于必须控制指令的状况,咱们倡议应用社区工具包的 SemanticOrderView,该工具在雷同的 .NET MAUI 版本中也能够应用。

2.SetSemanticFocus 和 Announce 办法

作为新 SemanticExtensions 类的一部分,咱们增加了一个新的 SetSemanticFocus 办法,容许您将屏幕阅读器焦点挪动到特定元素。将此与设置输出焦点的 VisualElement.Focus 进行比拟。

<VerticalStackLayout>    <Label        Text="Explore SemanticExtensions below"        TextColor="RoyalBlue"        FontAttributes="Bold"        FontSize="16"        Margin="0,10"/>    <Button        Text="Click to set semantic focus to label below"        FontSize="14"        Clicked="SetSemanticFocusButton_Clicked"/>    <Label        x:Name="semanticFocusLabel"        Text="Label receiving semantic focus"        FontSize="14"/></VerticalStackLayout>private void SetSemanticFocusButton_Clicked(object sender, System.EventArgs e){  semanticFocusLabel.SetSemanticFocus();}

在Essentials中,咱们增加了另一个新办法Announce,它设置屏幕阅读器要发表的文本。例如,单击按钮,您能够触发以下重要信息来读取:

void Announce_Clicked(object sender, EventArgs e){  SemanticScreenReader.Announce("Make accessible apps with .NET MAUI");}

SemanticOrderView:
https://github.com/xamarin/Xa...

字体缩放

所有平台上的所有控件默认都启用了字体缩放性能。这意味着当你的应用程序用户在操作系统中调整他们的文本缩放首选项时,你的UI将反映他们的抉择。默认状况下,这会生成一个更容易拜访的应用程序。


每个控件都有一个增加的 FontAutoScalingEnabled,它甚至能够与 FontImageSource 一起用于你的字体图标。设置 FontSize 是你的 100% 大小,并锁定它,你将设置 FontAutoScalingEnabled="false"。

<VerticalStackLayout>        <Label         Text="Scaling disabled"         FontSize="18"        FontAutoScalingEnabled="False"/>    <Label         Text="Scaling enabled"         FontSize="18"/></VerticalStackLayout>

请务必查看您的屏幕并依据须要调整款式,以确保它们实用于所有尺寸。

其余亮点

在这个版本中还减少了几个值得注意的内容。

咱们减少了对Effects的反对,它将反对从Xamarin.Forms降级的我的项目#1574
Effects:
https://docs.microsoft.com/zh...
1574:
https://github.com/dotnet/mau...

对AppThemeBinding的改良,反对深色和浅色主题模式#1657
1657:
https://github.com/dotnet/mau...

滚动视图处理程序#1669
1669:
https://github.com/dotnet/mau...

Android Shell移植到core #979
979:
https://github.com/dotnet/mau...

Shell导航传递简单对象#204
204:
https://github.com/dotnet/mau...

Visual Tree Helper增加了XAML热重载#1845
1845:
https://github.com/dotnet/mau...

切换到System.ComponentModel.TypeConverter #1725
1725:
https://github.com/dotnet/mau...

Window生命周期事件#1754
1754:
https://github.com/dotnet/mau...

页面导航事件#1812
1812:
https://github.com/dotnet/mau...

CSS前缀更新为-maui #1877
1877:
https://github.com/dotnet/mau...

对于一组残缺的更改,请查看分支比拟
分支比拟:
https://github.com/dotnet/mau...

当初开始

首先,装置 .NET 6 Preview 7。接下来应用 maui-check 增加 maui 工作负载。还要确保您已更新到 Visual Studio 2022 的最新预览版。

在Visual Studio 2022的将来版本中,MAUI将与其余工作负载一起装置。当初,咱们建议您通过命令行装置所有须要的组件。

筹备好了吗?关上Visual Studio 2022预览3并创立一个新我的项目。搜寻并抉择.NET MAUI。

无关 .NET MAUI 入门的其余信息,请参阅咱们的文档。

欢送反馈

Visual Studio 2022 预览版正在疾速启用 .NET MAUI 的新性能。当您在调试、部署和编辑器相干体验方面遇到任何问题时,请应用“帮忙”>“发送反馈”菜单报告您的体验。

目前,咱们也正在对 Visual Studio 2022中最新 Windows 应用程序 SDK 单我的项目 MSIX 扩大 和.NET MAUI进行最初的故障排除,以解决调试失败的问题。您能够间接胜利部署 Windows 应用程序并从“开始”菜单运行它。

请通过在 GitHub 上的 dotnet/maui 与咱们互动,让咱们理解您应用 .NET MAUI Preview 7 创立新应用程序的体验。

如果想理解将来的版本,请拜访咱们的产品路线图,如果想理解个性的完整性,请拜访咱们的状态wiki

单我的项目 MSIX 扩大:
https://marketplace.visualstu...
dotnet/maui:
https://github.com/dotnet/maui
产品路线图:
https://github.com/dotnet/mau...
状态wiki:
https://github.com/dotnet/mau...


这里有更多微软官网学习材料和技术文档,扫码获取免费版!
内容将会不定期更新哦!