MAUI候选版本3发布啦-编程思维

我们很高兴发布.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

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通过更改.App.MainPageShell.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 年内微软会继续支持涵盖这些产品。最后一次发布是在2021 年11 月,因此支持将持续到2023 年11 月。

我们需要您的反馈

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

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

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/MSReactor/p/16287050.html

当我会AOP之后,去丈母娘家都是挺着胸脯!-编程思维

    当和朋友谈到AOP时,第一映像会说AOP的应用层面,比如拦截器、过滤器,实现复用等等使用层面上。   这些应用层面上的回答远远没有深入AOP的思想。是的,AOP是思想,面向切面思想。   既然是编程思想,那我们就有必要了解AOP的整个过程,以及AOP思想出现的原因。   AOP面向切面编程思想,能够解决什么

Web Api源码(路由注册)-编程思维

这篇文章只是我学习Web API框架的输出,学习方法还是输出倒逼输入比较行得通,所以不管写的好不好,坚持下去,肯定有收获。篇幅比较长,仔细思考阅读下来大约需要几分钟。 做.NET开发有好几年时间了,从很久之前的WebForm到MVC,再到目前前后端分离模式下RESTful风格的 Web API ,相信这些Web框架很多

C# 给Word中的字符添加强调符号(着重号)-编程思维

在Word中添加着重号,即强调符号,可以在选中字符后,鼠标右键点击,选择“字体”,在窗口中可直接选择“着重号”添加到文字,用以对重要文字内容起加强提醒的目的,如下图: 通过C#,我们可以查找到需要添加着重号的字符串,然后通过字符串格式的属性值来添加符号。下面,将对此做详细介绍。   【引入dll】 方法1:手动引入。

(原创)[C#] MEF 主程序与插件加载不同版本的DLL-编程思维

一、前言 MEF(Managed Extensibility Framework),是轻量级的插件框架。使用简单,功能强大。详细介绍见MSDN,本文不再赘述。 在使用MEF时,会遇到这样一种场景:主程序和插件都引用了同一个DLL中同一个【方法F】,但是引用的DLL版本不一致。 那么,程序在运行时,会出现4种情况:(注:

abp venxt 中的UpdateAsync-编程思维

今天来说一下abp vnext 中UpdateAsync 不能修改(锁的问题),查看执行sql 发现 where 后面不仅有Id=  还有 and ConcurrencyStamp=,所以不能修改,要想修改就得先获取再修改,这有什么意义呢?其实这个就在于如下配置,获取就有意义了,获取对象后就给表的行加了锁(进程内),其

.net 跨平台应用开发动手教程 |用 uno platform 构建一个 kanban-style todo app_microsoftreactor-编程思维

作者:Steven Giesel 翻译:Alan Wang 校对:李卫涵 – 微软 MVP 排版:Rani Sun 有什么比参考包含分步说明和代码示例的动手教程更好的学习新技术的方式呢?当你完成或 fork 本教程后,你将得到这样一个应用程序: Steven Giesel 最近发布了一个由5部分内容组成的系列,记录

在 maui 中自绘组件1:绘制-编程思维

在 Maui 中自绘组件 系列文章已完结,共六篇,此为第一篇。 在 Maui 中自绘组件1:绘制 在 Maui 中自绘组件2:可绑定属性 在 Maui 中自绘组件3:事件与命令 在 Maui 中自绘组件4:点击动效 在 Maui 中自绘组件5:状态与视觉效果 在这篇文章中,将自定义一个简单的按钮组件,绘制边框、背景

.net maui-编程思维

.NET MAUI是什么 微软通过收购Xamarin后将其融于到了.Net MAUI中,最大的优点就是一套代码可以多平台共享,个人理解,展示样式(前端展示部分)是Xamarin.Forms的改进版,中间部分是接口层,用于统一接口,再往下就是每个系统相对对立的部分,例如非Windows环境是由Mono实现的,但Andr