.NET MAUI候選版本,能帶給你什麼小驚喜?

語言: CN / TW / HK

本文閲讀時間:8分鐘

好消息!.NET MAUI發佈了候選版本。SDK現在已經集成了API,可以更新庫,併為正式發佈(GA)兼容性做好了準備。和其他的.NET候選版本一樣,這個版本包含了一個“go live”的支持政策,這意味着.NET MAUI在你的產品應用中會得到微軟的支持。

  • .NET MAUI

    https://dotnet.microsoft.com/ zh-cn /apps/maui?ocid=AID3042760

獲取.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月。

  • Visual Studio 2022預覽版

    https://visualstudio.microsoft.com/vs/preview/ ?ocid=A ID3042760

  • 命令行説明

    https://github.com/dotnet/maui/wiki/macOS-Install

  • 發佈説明

    https://github.com/dotnet/maui/releases/tag/6.0.300-rc.1

  • 文檔

    https://docs.microsoft.com/zh-cn/dotnet/maui/get-started/first-app?pivots=devices-android ?ocid=A ID3042760

  • 遷移技巧表

    https://github.com/dotnet/maui/wiki/macOS-Install

  • .NET播客應用

    https://github.com/microsoft/dotnet-podcasts

  • Blazor Hybrid

    https://docs.microsoft.com/ zh-cn /aspnet/core/blazor/hybrid/?view=aspnetcore-6.0 ?ocid=A ID3042760

  • Xamarin支持政策

    https://dotnet.microsoft.com /zh -cn / platform/support/policy/xamarin ?ocid=A ID3042760

.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>

對於支持不同狀態的視圖,我們創建了一個合理的默認值,並提供了明暗模式顏色選項。欲瞭解更多信息,請查看:

  • 風格

  • 主題

  • 視覺狀態

  • 40多個佈局和控件

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/controls/ ?ocid=A ID3042760

  • 在案

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/controls/ ?ocid=A ID3042760

  • 動畫

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/animation/basic ?ocid=A ID3042760

  • 筆刷

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/brushes/ ?ocid=A ID3042760

  • 顯示彈出窗口

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/pop-ups ?ocid=A ID3042760

  • 圖形

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/graphics/ ?ocid=A ID3042760

  • 陰影

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/shadow ?ocid=A ID3042760

  • XAML

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/styles/xaml ?ocid=A ID3042760

  • CSS樣式

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/styles/css ?ocid=A ID3042760

  • 主題

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/theming ?ocid=A ID3042760

  • 視覺狀態

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/visual-states ?ocid=A ID3042760

  • 風格

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/styles/xaml ?ocid=A ID3042760

  • 主題

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/theming ?ocid=A ID3042760

  • 視覺狀態

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/visual-states ?ocid=A ID3042760

自定義控件

.NET MAUI 改進 Xamarin.Forms 體系結構的其中一件事是添加低代碼掛鈎來修改幾乎所有內容。讓我們考慮一個典型的例子,刪除Entry字段上獨特的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>

有關如何輕鬆修改跨平台以及平台特定層控件的外觀和感覺的更多示例,請參閲自定義控件的文檔。

  • 自定義控件的文檔

    https://docs.microsoft.com/ zh-cn /dotnet/maui/user-interface/handlers/customiz e ?ocid=AID3042760

我們需要你的反饋 

按照我們的簡單指南安裝Visual Studio 2022的最新預覽版(17.2預覽版3),並構建您的第一個多平台應用程序。

當您遇到任何問題時,請在GitHub上的 dotnet/maui上或者Microsoft Q&A 上提問。

  • 簡單指南

    https://docs.microsoft.com/ zh-cn /dotnet/maui/get-started/first-app?pivots=devices-android ?ocid=A ID3042760

  • GitHub上的dotnet/maui

    https://github.com/login?return_to=https//github.com/dotnet/maui/issues/new/choose

  • Microsoft Q&A

    https://docs.microsoft.com/ zh-cn /answers/products/dotnet ?ocid=A ID3042760

謝謝你讀完了本文!歡迎在 評論區留言 分享你的想法,並且 轉發到朋友圈

如果你對本文青睞有加,想要轉載到自己的平台, 請在後台回覆「轉載」 與我們取得聯繫!

長按識別二維碼

關注微軟中國MSDN

瞭解更多.NET MAUI