咱们很快乐公布 .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。
您应该用什么呢?.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 控件的许多自定义,包含设置背景款式、笼罩内容的背景、模板页眉、页脚、整个内容或仅菜单项。您还能够设置弹出按钮的宽度并使其放弃关上或齐全暗藏。以下是一些不同设计的示例:
要显示选项卡,您只需替换 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
点击 Xamarin Library 挪动到 .NET MAUI