.NET MAUI 预览版 6 发布

原文: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/

1动画

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

<DataTemplate x:Key="FavouriteTemplate"><FrameAttachedHandler="OnAttached"Opacity="0">...</Frame>
</DataTemplate>
<FlexLayoutBindableLayout.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/

2UI 组件

在这个版本中,有几个控件的所有属性和事件都被移植到了 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

3单项目模板

我们在这个版本中取得了进展,将多个 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

4开始使用 .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

5欢迎反馈

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

https://github.com/dotnet/maui

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

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

加入我们,一起踏上.NET大牛成长之路↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

德国布线牛到不行?今天带你看看咱们中国的!

全世界只有3.14 % 的人关注了数据与算法之美相信不少人都有看过德国的布线&#xff0c;那整齐的感觉让人舒服。这是由BuzzFeed网站刊登的照片&#xff0c;从图片可以看出&#xff0c;德国工程师严谨的态度却是表现的淋漓尽致&#xff0c;让人大饱眼福&#xff0c;简直就是洁癖症…

Java进阶02 异常处理

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; 程序很难做到完美&#xff0c;不免有各种各样的异常。比如程序本身有bug&#xff0c;比如程序打印时打印机没有纸了&#xff0c;比如内存不足。…

每日一笑 | 对不起,我还没下班...

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;

差异分析定位Ring 3保护模块

差异分析定位Ring 3保护模块 由于保护模块通常会Hook操作系统的原生DLL接口来进行保护&#xff0c;所以可以采用差异比较原生DLL文件和加载到内存中的原生DLL直接的差别来定位Ring 3模块。 在分析的过程中&#xff0c;为了防止被Ring 3保护模块发现&#xff0c;暂时可以先把除了…

html 输入框自动缩短 一行内显示,JQuery UI组合框自动补全功能改进版(即时全部显示+input内容保存)...

JQuery UI Autocomplete(自动补全)功能在input前端设计中非常有用&#xff0c;最近一个项目正好用到&#xff0c;仔细研究了下组合框(combobox)的自动补全部分&#xff0c;官方地址是&#xff1a;https://jqueryui.com/autocomplete/#combobox。官方的功能需要一个额外下拉按钮…

Magicodes.IE 2.5.4.2发布

Magicode.IE&#xff0c;导入导出通用库&#xff0c;支持Dto导入导出、模板导出、花式导出以及动态导出&#xff0c;支持Excel、Csv、Word、Pdf和Html。Github&#xff1a;https://github.com/dotnetcore/Magicodes.IE码云&#xff08;手动同步&#xff0c;不维护&#xff09;&…

耗时6年的DK博物科普巨著,全面提升孩子的认知高度

▲数据汪特别推荐点击上图进入玩酷屋小木用真金白银来给大家送礼物啦&#xff0c;特别感谢这些年一直以来大家对我们的支持&#xff0c;才让我们越做越好。&#xff08;点我参与送礼活动&#xff09;小木每次带侄子去郊游时&#xff0c;侄子总是会不断地提问&#xff0c;“这是…

android fragmentstatepageradapter框架,安卓爬坑指南之FragmentStatePagerAdapter

一次开发中&#xff0c;用到了viewpager嵌套viewpager&#xff0c;结果就踩到了这么一个坑。先上图&#xff1a;image.png图片中显示的界面布局和遇到的问题是这样的&#xff1a;首页发现版块是一个fragment&#xff0c;这个fragment中放了一个viewpager&#xff0c;这个viewpa…

每日一笑 | 一个男人逐渐变心的过程

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;

html 表格 左侧表头,左侧是表头的JS表格控件(自写,网上没有的)

今天&#xff0c;项目中要用到该表格&#xff0c;找了一遍&#xff0c;发现没有合适的&#xff0c;于是自己动手丰衣足食。最终呈现效果如上图&#xff0c;1、左侧是表头的表格数据展现&#xff0c;2、支持多行&#xff0c;多表头3、固定表头的功能4、能够支持标题5、获取表格中…

一个人的夜晚,让这些公众号来温暖你。

“外表的美只能取悦于人的眼睛&#xff0c;而内在的美却能感染人的灵魂”。阅读的内容决定了你的视野&#xff0c;转发的内容展现了你的底蕴。这些优质内容&#xff0c;你值得拥有&#xff0c;看下去你就知道。【关注方式&#xff1a;长按二维码&#xff0c;选择“识别图中二维…

grub参数介绍。

为什么80%的码农都做不了架构师&#xff1f;>>> grub的配置文件在/boot/grub/grub.conf。/etc/grub.conf和/boot/grub/menu.lst都是指向这个文件的软连接。 grub启动时&#xff0c;会寻找menu.lst文件&#xff0c;如果找不到&#xff0c;则进入grub>交互界面。…

又一次Task.Wait引起的教训

最近一用户在使用BeetleX.HttpClient组件并发访问延时比较高的https服务时引起了卡死现像。由于组件更多使用场景是内部服务和非https&#xff0c;一直没有这情况出现;但用户提供测试场景下这情况必现&#xff0c;所以翻查了一些相关代码。protected virtual void OnSslAuthent…

html盒模型向上浮动,HTML5盒模型、浮动和定位

在此之前我们先了解一下块级元素和行内元素的区别一、块级元素1、总是从新的一行开始2、高度、宽度都是可控的3、宽度没有设置时&#xff0c;默认为100%4、块级元素中可以包含块级元素和行内元素二、行内元素1、和其他元素都在一行2、高度、宽度以及内边距都是不可控的3、宽高就…

关于一个js栈溢出的异常

快一年没写web端的东西了&#xff0c;今天写了点东西。唉&#xff0c;快忘了&#xff0c;不过还好&#xff0c;基本的开发技能还是练出来了&#xff0c;这东西不能忘。 另外在这里贴点代码&#xff0c;预防以后会出现类似的情况。 javascript代码 //列表数据var appText new A…

科学中有故事,故事中有科学

▲数据汪特别推荐点击上图进入玩酷屋小木用真金白银来给大家送礼物啦&#xff0c;特别感谢这些年一直以来大家对我们的支持&#xff0c;才让我们越做越好。&#xff08;点我参与送礼活动&#xff09;孩子缺什么&#xff1f;不应该只是知识是独立思考意识、逻辑思维能力基于科学…

[译]WPF开源控件扩展库ControlzEx

原文链接&#xff1a;https://github.com/ControlzEx/ControlzEx翻译&#xff1a;沙漠尽头的狼&#xff08;谷歌及百度提供翻译支持&#xff09;Shared Controlz for WPF支持 .NET Framework&#xff08;4.5.2、4.6.2 及更高版本&#xff09;、.NET Core (3.1) 和 .NET 5&#…

html图片分开,webpack单独分离打包css,css里引用的图片路径错误,怎么解决?

现在我的这个项目是将css和js单独打包出来&#xff0c;打包后的目录结构和打包前一致。打包前&#xff1a;从这张图可以看到&#xff0c;如果是css文件夹根目录下的css文件引用images文件夹下的图片应该使用../就可以了&#xff0c;如果是css下某一个文件夹下面的css引用图片的…

每日一笑 | 程序员千万不能轻易去网吧!

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;

.Net Core with 微服务 - Consul 注册中心

上一次我们介绍了 Ocelot 网关的基本用法。这次我们开始介绍服务注册发现组件 Consul 的简单使用方法。服务注册发现首先先让我们回顾下服务注册发现的概念。在实施微服务之后&#xff0c;我们的调用都变成了服务间的调用。服务间调用需要知道IP、端口等信息。再没有微服务之前…