在吗?看看MAUI候选版本3!

语言: CN / TW / HK

本文阅读时间:5分钟

我们很高兴发布 .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 博客上的这些提示 。

  • Xamarin博客上的这些提示

    https://devblogs.microsoft.com/xamarin/tips-for-porting-your-xamarin-library-to-dotnet-maui/?ocid=AID3042760

专注于导航

.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通过更改 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>

ShellContent 使您能够描述用于导航的 URI 路由,并使用数据模板以便按需加载页面以保持启动性能。更明确地说,您可以将 ShellContent 导航别名包装起来,以清楚地指示 Shell 如何呈现您的 UI。

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


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

Shell 支持Flyout控件的许多自定义,包括设置背景样式、覆盖内容的背景、模板页眉、页脚、整个内容或仅菜单项。您还可以设置弹出按钮的宽度并使其保持打开或完全隐藏。以下是一些不同设计的示例:

要显示选项卡,您只需替换 FlyoutItemTab . 要对选项卡集合进行分组,您可以将它们进一步包装在 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 文档。

  • FlyoutPage

    https://translate.google.com/website?sl=auto&tl=zh-CN&hl=en&client=webapp&u=https://docs.microsoft.com/dotnet/maui/user-interface/pages/flyoutpage

  • TabbedPage

    https://translate.google.com/website?sl=auto&tl=zh-CN&hl=en&client=webapp&u=https://docs.microsoft.com/dotnet/maui/user-interface/pages/tabbedpage

  • NavigationPage

    https://translate.google.com/website?sl=auto&tl=zh-CN&hl=en&client=webapp&u=https://docs.microsoft.com/dotnet/maui/user-interface/pages/navigationpage

  • Shell Flyout

    https://docs.microsoft.com/dotnet/maui/fundamentals/shell/flyout?ocid=AID3042760

  • .NET MAUI Workshop

    https://github.com/dotnet-presentations/dotnet-maui-workshop/tree/main/Part 3 - Navigation

  • Shell 文档

    https://docs.microsoft.com/dotnet/maui/fundamentals/shell/navigation?ocid=AID3042760

从今天开始  

要在 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 月。

  • 请安装 Visual Studio 2022 预览版或将其更新

    https://aka.ms/vs2022preview

  • 命令行说明进行操作

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

  • 发行说明位于 GitHub 上

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

  • 文档

    https://docs.microsoft.com/dotnet/maui/get-started/installation?ocid=AID3042760

  • 迁移提示表

    https://github.com/dotnet/maui/wiki/Migration-to-Release-Candidate

  • Xamarin 支持政策

    https://dotnet.microsoft.com/platform/support/policy/xamarin?ocid=AID3042760

我们需要您的反馈

按照我们的简单指南安装适用于 Windows 的 Visual Studio 2022 的最新预览版(17.3 预览版 1),并立即构建您的第一个多平台应用程序。

我们很乐意听取您的意见!当您遇到任何问题时,请在 GitHub 上的 dotnet/maui 提交报告。

  • 按照我们的简单指南

    https://docs.microsoft.com/dotnet/maui/get-started/first-app?ocid=AID3042760

  • 在 GitHub 上的 dotnet/maui 提交报告

    https://github.com/dotnet/maui/issues/new/choose

谢谢你读完了本文!欢迎在 评论区留言 分享你的想法,并且 转发到朋友圈

如果你对本文青睐有加,想要转载到自己的平台, 请在后台回复「转载」 与我们取得联系!

长按识别二维码

关注微软中国MSDN

Xamarin Library移动到 .NET MAUI