在嗎?看看MAUI候選版本3!

微軟技術棧 發表於 2022-05-20

我們很高興釋出 .NET 多平臺應用程式 UI (.NET MAUI) 候選版本 3,這個版本包含一系列新的改進。與以前的候選版本一樣,RC3 包含在“上線”支援政策中,這意味著 Microsoft 為您的MAUI生產應用程式提供技術支援。
在嗎?看看MAUI候選版本3!

要開始使用 .NET MAUI,請安裝或升級到最新的 Visual Studio 2022 預覽版並選擇“.NET 多平臺應用程式 UI 開發”工作負載。這將安裝您需要的所有 .NET 6 元件,並啟用預覽功能以使您的 .NET MAUI 開發體驗更加高效。

有關將 Xamarin 庫遷移到 .NET 6 和 .NET MAUI 的指導,請檢視 Xamarin 部落格上的這些提示

專注於導航

.NET MAUI 為您提供了兩種在應用程式中實現導航的主要方法。最簡單但功能強大的選項是通過Shell來執行您的應用程式,Shell加強了針對桌面和移動模式的優化。第二種選擇是直接使用基本導航頁面控制元件:FlyoutPageTabbedPageNavigationPage

image.png


您應該用什麼呢?.NET MAUI 新專案模板實現了Shell並提供了優化的體驗,因此我們建議您從該模板開始。如果將來您想更換特定控制元件,您仍然可以重用所有 UI。Shell是一個 UI 控制元件,用於託管您的應用程式頁面並提供彈出選單和選項卡選單。

模板專案包含一個帶有單個頁面的“AppShell.xaml”,它被分配給了App.MainPage,為了更好的看到Flyout控制元件的效果,並簡單的新增更多的頁面,只需開啟flyout通過更改Shell.FlyoutBehavior

<Shell
    x:Class="MauiApp2.AppShell"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://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>

在嗎?看看MAUI候選版本3!
ShellContent使您能夠描述用於導航的 URI 路由,並使用資料模板以便按需載入頁面以保持啟動效能。更明確地說,您可以將ShellContent導航別名包裝起來,以清楚地指示 Shell 如何呈現您的 UI。

<FlyoutItem Title="Home" FlyoutIcon="home.png">
    <ShellContent ...>
</FlyoutItem>
​
<FlyoutItem Title="Items" FlyoutIcon="store.png">
    <ShellContent ...>
</FlyoutItem>

Shell 支援Flyout控制元件的許多自定義,包括設定背景樣式、覆蓋內容的背景、模板頁首、頁尾、整個內容或僅選單項。您還可以設定彈出按鈕的寬度並使其保持開啟或完全隱藏。以下是一些不同設計的示例:
在嗎?看看MAUI候選版本3!

要顯示選項卡,您只需替換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 年內微軟會繼續支援涵蓋這些產品。Xamarin的最後一次釋出是在 2021 年 11 月,因此支援將持續到 2023 年 11 月。

我們需要您的反饋

按照我們的簡單指南安裝適用於 Windows 的 Visual Studio 2022 的最新預覽版(17.3 預覽版 1),並立即構建您的第一個多平臺應用程式。

我們很樂意聽取您的意見!當您遇到任何問題時,請在 GitHub 上的 dotnet/maui 提交報告

掃描關注關注微軟中國MSDN
在嗎?看看MAUI候選版本3!

點選 Xamarin Library移動到 .NET MAUI