关于.net:NET-MAUI发布了期待已久的候选版本RC1

80次阅读

共计 3402 个字符,预计需要花费 9 分钟才能阅读完成。

作者:David Ortinau

咱们冲动地发表在 4 /13/2022.NET 多平台利用 UI (.NET MAUI)公布了候选版本。SDK 当初曾经集成好了 API,能够更新库,并为 GA(通用可用性)兼容性做好筹备。和其余的.NET 候选版本一样,这个版本蕴含了一个“go live”的反对政策,这意味着.NET MAUI 在你的产品利用中会失去了微软的反对。

从明天开始

获取.NET MAUI RC1,装置或更新 Visual Studio 2022 预览版 17.2 到预览版 3。在安装程序中,确认已在“应用.NET 工作负载的挪动开发”下选中 .NET MAUI(预览版)。

要在 Mac 上应用.NET MAUI RC1,请遵循 wiki 上的命令行阐明。在 Visual
Studio 2022 的 Mac 版本中,对.NET MAUI 的反对将在将来的预览版中正式公布。

在 GitHub 上有对于这个 RC 版本的公布阐明。对于开始应用.NET MAUI 的更多信息,请参考咱们的文档,以及在降级我的项目时要采纳的一系列更改的迁徙技巧表。

从.NET 播客利用中开始你的旅程吧(见上图),它能够在 Android,iOS,macOS 和 Windows 上运行,并展现了原生利用的 UI 和 Blazor Hybrid。

Xamarin 反对多久工夫呢?Xamarin 反对政策在这些产品首次公布后的 2 年内依然无效。最初一次公布是在 2021 年 11 月,因而反对将继续到 2023 年 11 月。

.NET MAUI 候选版本中有什么?

作为一个多平台的应用程序构建框架,.NET MAUI 利用了 Android、iOS、macOS 和 Windows 的平台 sdk。这些基本块都蕴含在这个版本中,除了应用.NET MAUI 最大化代码共享和效率外,你还能够间接应用 c\#。

.NET MAUI 提供了 40 多个布局和控件,为构建跨平台和挪动平台的自适应 UI 进行了优化。你也能够整合 Blazor 组件或整个 Blazor 应用程序,在桌面和挪动设施上公布雷同的体验,就像你明天在网络上公布的体验一样。

它与 Xamarin.Forms 相比如何? 你能够失去 Xamarin.Forms 附带的所有 UI 控件,加上新的控件,如 BlazorWebView, Border, GraphicsView, MenuBar, Shadow, and Window.

除了相干的主题,还有这些都记录在案,如:

  • 动画
  • 笔刷用于实色和突变色彩
  • 显示弹出窗口
  • 图形,充分利用 Microsoft.Maui 图形混合模式,色彩,画布绘图,图像,转换,缠绕模式,等等
  • 暗影
  • 应用 XAML 和 CSS 款式
  • 明暗模式的主题
  • 视觉状态

新的.NET MAUI 我的项目模板当初在“Resourcesstyles.xaml”中蕴含了一个默认的样式表为所有控件提供调色板和款式。以 Entry 为例,当启动一个新的应用程序时,这些文本输出当初将以一个共享的主题开始,同时依然对其运行的平台是实在的。

<Style TargetType="Entry">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" />
<Setter Property="FontFamily" Value="OpenSansRegular"/>
<Setter Property="FontSize" Value="14" />
<Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource LightGray}, Dark={StaticResource DarkGray}}" />
<Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource LightGray}, Dark={StaticResource DarkGray}}" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
</Style>

对于反对不同状态的视图,咱们创立了一个正当的默认值,并提供了明暗模式色彩选项。欲了解更多信息,请查看:

  • 格调
  • 主题
  • 视觉状态

自定义控件

.NET MAUI 改良 Xamarin.Forms
体系结构的其中一件事是增加低代码挂钩来批改简直所有内容。让咱们思考一个典型的例子,删除条目字段上独特的 Android 下划线。当没有多平台格调的“下划线”,它只存在于 Android 时,你可能会去做这个?

#if ANDROID
Microsoft.Maui.Handlers.EntryHandler.Mapper.ModifyMapping("NoUnderline", (h, v) =>
{h.PlatformView.BackgroundTintList = ColorStateList.ValueOf(Colors.Transparent.ToPlatform());
});
#endif

这就是所有的代码。这段代码只须要在调用处理程序之前运行在应用程序的开始局部。

让咱们来解释一下这是怎么回事。首先,\#if ANDROID 是一个条件编译指令,表明这段代码只能在安卓上运行。在其余状况下,当您为所有平台批改控件时,这是不必要的。

接下来,咱们须要拜访控件。你应用的 Entry 是一个.NET MAUI 控件。Entry 的每个属性、命令、事件等都通过“处理程序 handler”“映射 mapped”到平台实现。要批改映射,你能够通过处理程序的映射 (如 Microsoft.Maui.Handlers.EntryHandler.Mapper) 进入它。从 mapper 中咱们有 3 种办法:

  • PrependToMapping 在.NET MAUI 代码之前运行
  • modifmapping 运行,而不是.NET MAUI 代码
  • AppendToMapping 运行在.NET MAUI 代码之后

对于这种状况,咱们应用哪个并不重要,因为它至多会被调用一次,并且 Entry 上的其余实现不会涉及咱们须要批改的本机属性。这里代码应用了 modifmapping 并增加了一个名为“NoUnderline”的 Entry。通常,该属性与理论属性的名称相匹配,但在本例中,咱们将引入一个新的属性。

在 action 里的 h 是 handler 它让咱们拜访 PlatformView 里是安卓类型的 TextView。在这一点上,代码是间接与安卓 SDK 工作。

当初去掉了下划线,你能够实现本人的设计,比如说,一个像老式 Windows
Phone 那样的边框。

<Border Stroke="{StaticResource Black}"
StrokeThickness="2"
StrokeShape="Rectangle">
<Entry
Margin="20,4"
Placeholder="Username" />
</Border>

无关如何轻松批改跨平台以及平台特定层控件的外观和感觉的更多示例,请参阅自定义控件的文档。

咱们须要你的反馈

依照咱们的简略指南装置 Visual Studio 2022 的最新预览版(17.2 预览版 3),并构建您的第一个多平台应用程序。

当您遇到任何问题时,请在 GitHub 上的 dotnet/maui 上或者 Microsoft Q&A 上发问。

正文完
 0