.NET MAUI是什么
- 微软通过收购Xamarin后将其融于到了.Net MAUI中,最大的优点就是一套代码可以多平台共享,个人理解,展示样式(前端展示部分)是Xamarin.Forms的改进版,中间部分是接口层,用于统一接口,再往下就是每个系统相对对立的部分,例如非Windows环境是由Mono实现的,但Android、iOS 和 macOS在部署Mono时也会有配置偏差。
- VS2022创建项目时.NET MAUI和.NET MAUI Blazor的不同
- .NET MAUI 应用:
- Android 5.0 (API 21) 或更高版本。
- iOS 11 或更高版本,使用最新版本的 Xcode。
- 使用 Mac Catalyst 的 macOS 10.15 或更高版本。
- 使用 Windows UI 库 (WinUI) 3 Windows 11和Windows 10版本 1809 或更高版本。
- .NET MAUI Blazor 应用具有以下附加平台要求:
- 需要 Android 7.0 (API 24) 或更高版本
- 需要 iOS 14 或更高版本。
- 使用 Mac Catalyst 的 macOS 11 或更高版本。
- .NET MAUI 应用:
准备工作
-
下载Visual Studio 2022 17.3 或更高版本,注意:生成IOS软件需要Mac系统(Xcode 版本要兼容),且需要Apple ID 和开发人员注册(付费的)才能部署并提交到Apple Store。
-
在安装vs2022时需要勾选MAUI开发,如下图所示:
-
安装前请先看看磁盘够不够大,光MAUI这一项就要7个G,不加其他选项。另外vs2022会有版本升级,因此建议磁盘在预装vs2022时系统盘够大,且设置安装位置时尽量不要放在系统盘中,如下图所示:
-
目前MAUI还处于成长阶段,最大的优势就是微软原生且集成了Blazor,更新可能会很频繁。
简单创建
打开vs2022,文件->新建->项目,或者直接使用快捷键Ctrl+Shift+N,新建一个新项目。
在创建新项目搜索项中输入mui,会出现三个与maui相关的新建项目,分别为
-
.net maui
基于Xamarin.Forms的迭代版本,与Flutter类似
路由创建:根据Route属性或者通过 Routing.RegisterRoute显式的注册。
路由调用:Shell.Current.GoToAsync(nameof(ContentPage))
-
.net maui Blazor
基于各平台WebView组件
路由创建:在组件上,使用@page指令指定
路由调用:
- @inject NavigationManager navigationManager
- navigationManager.NavigateTo("/Counter");
-
.net maui 类
生成可被引用的dll
新建项目公共部分
Propertis 项目资源管理器
Platforms 各平台配置文件夹
- 各平台相关权限配置
Resources 静态资源
.NET MAUI
创建项目后,系统会自带可运行的简单demo
App.xaml :主框架,可设置程序的资源属性,例如资源字典值等
AppShell.xaml :主框架的壳,用于放置路由
MainPage.xaml :默认显示的主页,继承ContentPage类
MauiProgram.cs :主程序入口,写法与.net core程序一致
系统启动流程如下:
- 调用MauiProgram的CreateMauiApp方法获得MauiApp,期间会通过UseMauiApp方法加载主框架(App.xaml)
- App.xaml中需要对MainPage对象进行实例化,自带例子中是实例化为了AppShell.xmal,只要继承了Page类的都可以赋值给MainPage
- AppShell.xaml中设置了路由(Route="MainPage"),跳转到了MainPage.xaml
- MainPage页面信息进行了展示。
.NET MAUI Blazor
创建项目后,系统会自带可运行demo
wwwroot :存放静态资源的文件夹
Data文件夹 :数据模拟
Pages文件夹 :页面
Shared文件夹 :全局页面
MainLayout.razor :布局
NavMenu..razor :菜单
SurveyPrompt.razor:组件
_Imports.razor :全局引用
App.xaml :主框架,可设置程序的资源属性,例如资源字典值等
Main.razor :默认页调用的类
MainPage.xaml :默认页
MauiProgram.cs :主函数入库,调用了Blazor
系统启动流程:
- 系统调用MauiProgram类的CreateMauiApp方法返回MauiApp,其中UseMauiApp引用Application类(App.xaml)
- App.xaml中MainPage实例化了MainPage.xaml类
- MainPage.xaml类中通过组件的形式加载了Main.razor(
),此刻就开启了Blazor的相关页面 - Main.razor中路由通过获取@page的类来收集路由,默认使用MainLayout框架
- MainLayout框架中引用了MavMenu.razor,用来展示左侧菜单
- MavMenu.razor中默认的是跳转到href=''中,也就是Index.razor
- Index.razor中使用了SurveyPrompt组件,为SurveyPrompt.razor的类
wwwroot的index.html中为浏览器和c#交互的js
标签:razor,xaml,MainPage,版本,MAUI,NET From: https://www.cnblogs.com/wanghun315/p/17164485.html