首页 > 其他分享 >.NET MAUI

.NET MAUI

时间:2023-02-28 15:45:52浏览次数:39  
标签:razor xaml MainPage 版本 MAUI NET

.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 或更高版本。

准备工作

  1. 下载Visual Studio 2022 17.3 或更高版本,注意:生成IOS软件需要Mac系统(Xcode 版本要兼容),且需要Apple ID 和开发人员注册(付费的)才能部署并提交到Apple Store。

  2. 在安装vs2022时需要勾选MAUI开发,如下图所示:

  3. 安装前请先看看磁盘够不够大,光MAUI这一项就要7个G,不加其他选项。另外vs2022会有版本升级,因此建议磁盘在预装vs2022时系统盘够大,且设置安装位置时尽量不要放在系统盘中,如下图所示:

  4. 目前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程序一致

系统启动流程如下:

  1. 调用MauiProgram的CreateMauiApp方法获得MauiApp,期间会通过UseMauiApp方法加载主框架(App.xaml)
  2. App.xaml中需要对MainPage对象进行实例化,自带例子中是实例化为了AppShell.xmal,只要继承了Page类的都可以赋值给MainPage
  3. AppShell.xaml中设置了路由(Route="MainPage"),跳转到了MainPage.xaml
  4. 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

系统启动流程:

  1. 系统调用MauiProgram类的CreateMauiApp方法返回MauiApp,其中UseMauiApp引用Application类(App.xaml)
  2. App.xaml中MainPage实例化了MainPage.xaml类
  3. MainPage.xaml类中通过组件的形式加载了Main.razor(),此刻就开启了Blazor的相关页面
  4. Main.razor中路由通过获取@page的类来收集路由,默认使用MainLayout框架
  5. MainLayout框架中引用了MavMenu.razor,用来展示左侧菜单
  6. MavMenu.razor中默认的是跳转到href=''中,也就是Index.razor
  7. Index.razor中使用了SurveyPrompt组件,为SurveyPrompt.razor的类

wwwroot的index.html中为浏览器和c#交互的js

标签:razor,xaml,MainPage,版本,MAUI,NET
From: https://www.cnblogs.com/wanghun315/p/17164485.html

相关文章

  • 用 Visual Studio 升级 .NET 项目
    现在,你已可以使用VisualStudio将所有.NET应用程序升级到最新版本的.NET!这一功能可以从VisualStudio扩展包中获取,它会升级你的.NETFramework或.NETCore网页......
  • .NET 6 运行在Win7 SP1上出错
    因此Win7需要安装更新。UpdatePack7R2(Win7补丁累积更新包),UpdatePack7R2是Win7系统上的一款累积更新安装包工具,由老毛子团队制作,将Win7系统上的一些更新包程序整合到一......
  • kubernetes-v1.16.x在openeuler上部署
    00概述在openeuler-20.03-sp3上使用kubeadm不是k8s-v1.16.15,cni使用flannel组件01envkubernetes-v1.16.15docker-19.03.xeuler20.03.sp3(centos8.4.x)kernnel-v4......
  • 即时通讯技术文集(第9期):Java NIO和Netty入门系列 [共19篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第9 期。[-1-] 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别[链接] htt......
  • 利用XSLT及C#.net将SVG转换为XAML
    在网上找到了一个名为SVG-Convert-Driver-XAML-0.02的开源代码,解压缩之后发现,它并不是使用.net代码写的,所以并不适合我的需要。不过,里面有一个文件却是非常有用的,那就是......
  • 关于.Net中的计时器及WPF中最适合的计时器问题
    .Net中,至少可以找出5个计时器类型:(1)System.Threading.Timer(2)System.Timers.Timer(3)System.Windows.Forms.Timer(4)System.Web.UI.Timer(5)System.Windows.Threading.Dis......
  • .NET文件夹上传解决方案
    ​ IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag     ......
  • .Net之Winform桌面应用程序中Combobox三级下拉菜单连动问题的解决方案
    由于上传数据库不方便,所以,就直接使用XML文件做数据库吧。这是实现后的效果截图: 三级菜单对应的XML文件(数据库):第一级:省/直辖市,对应的XML文件:Location_Province.xml第二级:......
  • ASP.NET Core - 依赖注入(三)
    4.容器中的服务创建与释放我们使用了IoC容器之后,服务实例的创建和销毁的工作就交给了容器去处理,前面也讲到了服务的生命周期,那三种生命周期中对象的创建和销毁分别在......
  • Kubernetes部署的10个注意事项
    摘要容器开发有望在云中实现前所未有的可移植性和可扩展性。此外,DevOps开发和文化实践也有助于提升业务价值和响应能力。但是,在开始第一个容器开发项目之前,有一些问题......