.NET MAUI候选版本3特点展示

91 阅读4分钟

我们发布了.NET多平台应用程序用户界面(.NET MAUI)候选发布版3,其中有一批新的改进。与以前的候选发布版一样,RC3由 "上线 "支持政策覆盖,这意味着.NET MAUI得到了微软对你的生产应用的支持。

.NET Multi-platform App UI install workload

要开始使用.NET MAUI,请安装或升级到最新的Visual Studio 2022预览版,并选择".NET多平台应用程序UI开发 "工作负载。这将安装所有你需要的.NET 6件,再加上启用预览版的功能,使你的.NET MAUI开发经验更有成效。

关于将Xamarin库迁移到.NET 6和.NET MAUI的指导,请查看Xamarin博客上的这些提示,以及5月份.NET MAUI社区研讨会,Brandon Minnick讨论了将Xamarin社区工具包迁移到.NET MAUI。

专注于导航

.NET MAUI为你提供了2种在你的应用程序中实现导航的主要方式。最简单而有力的选择是在Shell ,它提供了为桌面和移动模式优化的细节。第二个选择是直接使用基本的导航页面控件。FlyoutPage,TabbedPage, 和NavigationPage

外壳基础控件
浮动控件
标签
导航基于URI推送/弹出
数据传输基于URI的视图模型
可模板化是的不可以

你应该使用什么?.NET MAUI的新项目模板实现了Shell ,并提供了优化的体验,所以我们推荐你从这个模板开始使用。如果将来你想换成特定的控件,你仍然可以重用你的所有UI。Shell 是一个UI控件,它承载了你的应用程序页面,并提供了飞出和标签菜单。

模板项目包括一个带有单个页面的 "AppShell.xaml",它被分配给App.MainPage 。要看到飞出的效果,只需添加更多的页面,并通过改变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>

basic Flyout example images

ShellContent 你可以描述用于导航的URI路线,并使用数据模板,这样你的页面就可以按需加载,以保持你的启动性能。为了更加明确,你可以将 ShellContent打包在导航别名中,明确指示Shell如何呈现你的用户界面:

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

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

Shell支持对飞出的许多定制,包括背景的样式,覆盖内容的背景,模板化的标题,页脚,整个内容,或只是菜单项。你还可以设置飞出的宽度,保持它的开放性或完全隐藏它。这里有一些不同的设计例子:

gallery of flyout examples

为了显示标签,你可以用Tab 替换FlyoutItem 。要对标签集合进行分组,你可以用一个TabBar 来进一步包装它们。无论你需要怎样混合和匹配你的应用程序的页面,Shell 将为你做所有的导航。

关于定制flyout和标签的更多信息,请查看Shell flyoutShell tabs文档。

当你需要在你的应用程序中导航到更深的页面时,你可以声明自定义路由,并通过URI导航--甚至传递querystring参数:

// 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研讨会,了解更多的例子。

QueryProperty 属性将传入的querystring参数路由到提供的公共属性。在实现MVVM模式时,你也可以用视图模型这样做。

关于使用Shell导航的更多信息,请查看Shell文档

今天就开始吧

要在Windows上获得.NET MAUI RC3,请安装或更新Visual Studio 2022 Preview到17.3 Preview 1版本。 在安装程序中,确认.NET MAUI(预览)在 "用.NET进行移动开发 "的工作负载下被选中。

要在Mac上使用.NET MAUI RC3,请遵循wiki上的命令行说明。Visual Studio 2022 for Mac中对.NET MAUI的支持将在未来的预览版中正式出货。

候选版本3的发布说明在GitHub上。关于开始使用.NET MAUI的其他信息,请参考我们的文档迁移提示表,以了解升级项目时需要采用的变化清单。

关于Xamarin支持的提醒 Xamarin支持政策仍然有效,该政策涵盖这些产品在初始发布后的2年内。最后一次发布是在2021年11月,所以支持将持续到2023年11月。

我们需要你的反馈

按照我们的简单指南安装Visual Studio 2022 for Windows的最新预览版(17.3 Preview 1),并在今天构建你的第一个多平台应用程序。

我们很想听到你的反馈!如果你遇到任何问题,请在GitHub上提交报告,地址是dotnet/maui