作者: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 ANDROIDMicrosoft.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"><EntryMargin="20,4"Placeholder="Username" /></Border>
无关如何轻松批改跨平台以及平台特定层控件的外观和感觉的更多示例,请参阅自定义控件的文档。
咱们须要你的反馈
依照咱们的简略指南装置Visual Studio 2022的最新预览版(17.2预览版3),并构建您的第一个多平台应用程序。
当您遇到任何问题时,请在GitHub上的 dotnet/maui上或者Microsoft Q&A 上发问。