MAUI候選版本3發布啦
我們很高興發布.NET 多平台應用程式UI (.NET MAUI) 候選版本3,這個版本包含一系列新的改進。與以前的候選版本一樣,RC3 包含在”上線”支援政策中,這意味著Microsoft 為您的MAUI生產應用程式提供技術支援。
要開始使用.NET MAUI,請安裝或升級到最新的Visual Studio 2022 預覽版並選擇”.NET 多平台應用程式UI 開發”工作負載。這將安裝您需要的所有.NET 6 組件,並啟用預覽功能以使您的.NET MAUI 開發體驗更加高效。
有關將Xamarin 庫遷移到.NET 6 和.NET MAUI 的指導,請查看 Xamarin 部落格上的這些提示
專註於導航
.NET MAUI 為您提供了兩種在應用程式中實現導航的主要方法。最簡單但功能強大的選項是通過Shell來運行您的應用程式,Shell加強了針對桌面和移動模式的優化。第二種選擇是直接使用基本導航頁面控制項: FlyoutPage、 TabbedPage 和 NavigationPage。
Shell | Base Controls | |
---|---|---|
Flyout | Yes | Yes |
Tabs | Yes | Yes |
Navigation | URI Based | Push/Pop |
Passing Data | URI Based | View Models |
Template-able | Yes | No |
您應該用什麼呢?.NET MAUI 新項目模板實現了Shell並提供了優化的體驗,因此我們建議您從該模板開始。如果將來您想更換特定控制項,您仍然可以重用所有UI。Shell是一個UI 控制項,用於託管您的應用程式頁面並提供彈出菜單和選項卡菜單。
模板項目包含一個帶有單個頁面的”AppShell.xaml”,它被分配給了App.MainPage,為了更好的看到Flyout控制項的效果,並簡單的添加更多的頁面,只需開啟flyout通過更改.App.MainPageShell.FlyoutBehavior
<Shell
x:Class="MauiApp2.AppShell"
xmlns="//schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="//schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:MauiApp2"
Shell.FlyoutBehavior="Flyout">
<ShellContent
Title="Home"
ContentTemplate="{DataTemplate local:MainPage}"
Route="MainPage" />
<ShellContent
Title="Items"
ContentTemplate="{DataTemplate local:ItemsPage}"
Route="ItemsPage" />
</Shell>
ShellContent使您能夠描述用於導航的URI 路由,並使用數據模板以便按需載入頁面以保持啟動性能。更明確地說,您可以將ShellContent導航別名包裝起來,以清楚地指示Shell 如何呈現您的UI。
<FlyoutItem Title="Home" FlyoutIcon="home.png">
<ShellContent ...>
</FlyoutItem>
<FlyoutItem Title="Items" FlyoutIcon="store.png">
<ShellContent ...>
</FlyoutItem>
Shell 支援Flyout控制項的許多自定義,包括設置背景樣式、覆蓋內容的背景、模板頁眉、頁腳、整個內容或僅菜單項。您還可以設置彈出按鈕的寬度並使其保持打開或完全隱藏。以下是一些不同設計的示例:
要顯示選項卡,您只需替換FlyoutItem為Tab. 要對選項卡集合進行分組,您可以將它們進一步包裝在TabBar. 根據需要混合和匹配應用程式的頁面,並將Shell為您完成所有導航。
有關自定義flyout的更多資訊,請查看Shell Flyout文檔。
當您需要導航到應用程式中更深入的頁面時,您可以聲明自定義路由,並通過URI 導航——甚至傳遞查詢字元串參數。
// declare a new route
Routing.RegisterRoute(nameof(SettingsPage), typeof(SettingsPage));
// execute a route
await Shell.Current.GoToAsync(nameof(SettingsPage));
// execute a route passing data
await Shell.Current.GoToAsync($"{nameof(SettingsPage)}?setting=appearance");
// receive querystring value
[QueryProperty(nameof(SelectedSubSection), "setting")]
public partial class TipsPage : ContentPage
{
...
public string SelectedSubSection { get;set;}
...
}
除了參數之外,您還可以通過.NET MAUI 引入的新API 傳遞複雜的數據對象:
// execute a route passing full object
var person = new Person { Name="James" };
await Shell.Current.GoToAsync("DetailsPage", new Dictionary<string, object>
{
{ "person", person }
});
// received the object
[QueryProperty(nameof(Person), "person")]
public partial class DetailsPage : ContentPage
{
Person person;
public Person Person
{
get => person;
set => person = value;
}
}
查看.NET MAUI Workshop以獲取更多示例。
該QueryProperty屬性將傳入的查詢字元串參數路由到提供的公共屬性。在實現MVVM 模式時,您也可以使用視圖模型執行此操作。
有關使用Shell 導航的更多資訊,請查看Shell 文檔。
從今天開始
要在Windows 上獲取.NET MAUI RC3,請安裝 Visual Studio 2022 預覽版或將其更新到版本17.3 預覽版1。在安裝程式中,確認在”使用.NET 進行移動開發”工作負載下選中了.NET MAUI(預覽版)。
要在Mac 上使用.NET MAUI RC3,請按照wiki 上的命令行說明進行操作。Visual Studio 2022 for Mac 中對.NET MAUI 的支援將在未來的預覽版中正式發布。
Release Candidate 3發行說明位於 GitHub 上。有關.NET MAUI 入門的更多資訊,請參閱我們的文檔和遷移提示表,了解升級項目時要採用的更改列表。
關於Xamarin 支援的提醒
Xamarin 支援政策仍然有效,該政策指明在初始發布後的2 年內微軟會繼續支援涵蓋這些產品。最後一次發布是在2021 年11 月,因此支援將持續到2023 年11 月。
我們需要您的回饋
按照我們的簡單指南安裝適用於Windows 的Visual Studio 2022 的最新預覽版(17.3 預覽版1),並立即構建您的第一個多平台應用程式。
我們很樂意聽取您的意見!當您遇到任何問題時,請在 GitHub 上的dotnet/maui 提交報告。