Liam W
封面

.NET MAUI 预览版 5 发布

作者
王亮·发表于 2 年前

原文:bit.ly/2SKad9g
作者:.NET Blog - David
译者:精致码农 - 王亮

当我们还在从微软 Build 大会和 .NET 6 预览版 4 中缓过来的时候,我们在这里就开始分享我们在 .NET 6 预览版 5 中对 .NET 多平台应用程序开发框架(.NET MAUI)的持续进展了。在这个版本中,我们启用了动画和视图转换,完成了几个 UI 组件的移植,并对单项目模板进行了改进。

我们还发布了第一批预览文档,涵盖了 .NET MAUI 的介绍性和基础性内容:

https://docs.microsoft.com/dotnet/maui/

动画

在 .NET MAUI 中执行动画有几种方法,其中最简单的是使用视图扩展方法,如 FadeTo, RotateTo, ScaleTo, TranslateTo 等。在下面的例子中,我使用新的 HandlerAttached 事件抓取了每个与布局绑定的视图的引用。

<DataTemplate x:Key="FavouriteTemplate">
    <Frame
        AttachedHandler="OnAttached"
        Opacity="0">
        ...
    </Frame>
</DataTemplate>
<FlexLayout
    BindableLayout.ItemTemplate="{StaticResource FavouriteTemplate}"
    BindableLayout.ItemsSource="{Binding Favorites}"
    >
    ...
</FlexLayout>

当页面呈现时,我将视图以轻微交错的方式制成动画,以创造美丽的层叠效果。

public partial class FavoritesPage : ContentPage
{
    List<Frame> tiles = new List<Frame>();

    void OnAttached(object sender, EventArgs e)
    {

        Frame f = (Frame)sender;
        tiles.Add(f);
    }

    protected override async void OnAppearing()
    {
        base.OnAppearing();

        await Task.Delay(300);
        TransitionIn();
    }

    async void TransitionIn()
    {
        foreach (var item in tiles)
        {
            item.FadeTo(1, 800);
            await Task.Delay(50);
        }
    }
}

对于更完整的视图动画的协调,请查看自定义动画文档,其中演示了添加多个可以并行运行的子动画:

https://docs.microsoft.com/xamarin/xamarin-forms/user-interface/animation/custom

你可以从 GitHub 上的 WeatherTwentyOne 项目查看和运行这个例子的源代码:

https://github.com/davidortinau/WeatherTwentyOne/

UI 组件

在这个版本中,有几个控件的所有属性和事件都被移植到了 Xamarin.Forms 渲染器架构的处理程序中,包括 ActivityIndicatorCheckBoxImageStepper。在以前的预览版本中,你需要检查一个控件是否被移植,并从兼容包中为那些不可用的控件注册渲染器。在 .NET MAUI 预览版 5 中,我们通过更新 UseMauiApp 扩展来为你连接所有的控件,无论它们是基于处理程序还是渲染器,都让这一切变得更加简单。

预览版 5 的新内容还包括首次引入 Shell,这是一个应用程序容器,提供 URI 导航和实现弹出式菜单和标签的快速方法。要使用它,请在 App.xaml.cs 中添加 Shell 作为窗口的根元素。我遵循的典型模式将其命名为 AppShell,当然你也可以按照你的意愿来命名它。

protected override IWindow CreateWindow(IActivationState activationState)
{
    return new Microsoft.Maui.Controls.Window(
        new AppShell()
    );
}

在你的 AppShell 类中,使用你希望显示的导航类型,无论是 FlyoutItem 还是 Tab,并用内容填充菜单。这些不是 UI 控件,而是代表将创建这些 UI 控件的类型。你以后可以用我们将在预览 6 中介绍的内容模板来给这些控件添加样式。

<Shell xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
       xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
       xmlns:pages="clr-namespace:ControlGallery.Pages"
       Title="ControlGallery"
       x:Class="ControlGallery.AppShell">

    <FlyoutItem Title="Margin and Padding">
        <ShellContent Route="marginpadding"
                      ContentTemplate="{DataTemplate pages:ControlsPage}" />
    </FlyoutItem>

    <FlyoutItem Title="ActivityIndicator">
        <ShellContent Route="activityindicator"
                      ContentTemplate="{DataTemplate pages:ActivityIndicatorPage}" />
    </FlyoutItem>

    ...

</Shell>

在我们的 .NET MAUI 进度状态页面上查看有关控件、布局和功能的最新信息:

https://github.com/dotnet/maui/wiki/Status

单项目模板

我们在这个版本中取得了进展,将多个 WinUI 项目合并为一个。现在,当你使用 dotnet new maui 命令创建一个项目时,你会看到两个项目:多目标的 .NET MAUI 项目,和 WinUI 项目。

现在要运行 WinUI 项目,你就不会对选择哪个项目感到困惑了。这离最终的愿景又近了一步,即一个项目可以构建和部署到所有支持的平台。为了支持这一点,你需要安装这些 Visual Studio 16.11 Preview 2 的 Project Reunion 0.8 (Preview) 扩展。

https://marketplace.visualstudio.com/items?itemName=ProjectReunion.MicrosoftProjectReunionPreview
https://marketplace.visualstudio.com/items?itemName=ProjectReunion.MicrosoftSingleProjectMSIXPackagingTools

开始使用 .NET MAUI 预览版 5

在这个版本中,不再需要添加一个自定义的 NuGet 源来 restore 你的项目。只要创建一个新的项目并运行它就可以了。为了获得所有最新的部件,我们继续推荐运行 maui-check dotnet 工具。

安装:

dotnet tool install -g redth.net.maui.check

运行该工具可跟踪更新,以获得.NET 6 预览版 5、平台 SDK、.NET MAUI、项目模板,甚至检查你的环境是否有第三方依赖。

maui-check

如果你想自己一步步来,你可以根据这些说明单独安装所有东西:

https://github.com/dotnet/maui-samples/#installing-with-official-preview-installers

一旦安装完毕,你就可以根据预览 5 的模板创建一个新的应用程序:

dotnet new maui -n MauiFive

在 Visual Studio 16.11 预览 1 中打开你的新 MauiFive.sln,并在你选择的平台上运行。

若你急于使用 Visual Studio 2022 预览版 1,要使用安卓模拟器开始探索移动平台,和使用远程 iOS 设备开始探索 iOS,或者连接 Mac 主机,请务必禁用 XAML Hot Reload 以避免出现类型错误。或使用 Visual Studio 2019 的 16.11 预览版。

未来,Project Reunion 扩展将支持 Visual Studio 2022,你将能够在 Windows 上使用所有的平台。

如果你有现有的 .NET MAUI 项目,你希望迁移到 Preview 5,我建议像上面那样创建一个新项目,并将你的文件复制到多目标项目中,这样你就可以避免协调 WinUI 项目的麻烦。

有关开始使用 .NET MAUI 的其他信息,请参考我们新的文档网站:

https://docs.microsoft.com/dotnet/maui

欢迎反馈

请让我们了解您使用 .NET MAUI 预览版 5 创建新应用程序的体验,请在 GitHub 上与我们联系,地址是:

https://github.com/dotnet/maui

要了解未来版本的内容,请访问我们的路线图:

https://github.com/dotnet/maui/wiki/roadmap