.NET MAUI發布了期待已久的候選版本(RC1)


作者: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.

除了相關的主題,還有這些都記錄在案,如:

新的.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 上提問。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM