前言:Maui终于在昨天(2022年8月9日)推送出来了。今儿就迫不及待来把玩一下先。

A、我本地已有VS2022,不过版本比较老,此处选择更新。工具 -> 获取功能和更新里面,可以获取到新版本更新。

B、最新版本是17.3.0,我本地只有17.1.1,选择 更新。

C、让网络飞一会儿。

1、更新完毕,打开VS,创建一个新的Maui项目(.NET MAUI应用)

2、创建成功以后,右边可以看到如图所示的起始项目。Platforms里面,是该项目支持的平台环境类型,包括安卓、苹果、windows桌面等。

3、直接运行,走一个。默认情况下,启动为Windows桌面客户端APP的形式。

4、项目的一些层级关系,如图所示。App构造函数里面,指定了主页为AppShell;AppShell里面又重定向到MainPage,MainPage设计器与业务交互代码里面,有一个点击事件。

5、VS工具栏有一排工具,可以用来配置模拟运行环境的。

6、比如说,此处我配置了一个默认的模拟器。

7、配置好以后,运行里面就可以选择该模拟器了。

8、右键,默认情况下,可能都勾选了安卓和iOS,没有iOS模拟设备,就去掉该选项。

9、然后直接运行,会看到提示,显示正在部署到 xxx模拟器上。前提可能需要电脑开启虚拟化,没开启的,可以参考我的另一篇文章进行开启虚拟化:https://www.cnblogs.com/weskynet/p/14825081.html

10、运行以后的效果,如图所示。显示内容与桌面端是一样的,相当于一套同样的代码,多端可以同时跑。

【注意事项】Maui项目路径必须不能含有中文,否则可能会提示找不到文件 ,或者 APT 2000 错误之类的等等。

11、测试一下点击按钮,搞个断点,走一波,嘿,还真的进来了。

12、新建一个Maui页面,此处就叫Wesky,在里面写点小内容。同时把App构造函数里面的主页改成我自己的新建页,然后走一波。

13、然后此处新建一个button按钮,搞一个弹窗测试下效果。

14、然后,测试一下依赖注入的效果。新建一个Test类以及接口ITest,里面写一个GetString方法,用来返回一个字符串。然后在Program里面,进行依赖注入注册,然后在App构造函数里面进行注入,可以看到进入构造函数里面了,并且可以获取到实例,说明依赖注入是生效的。

15、Maui和WPF可谓几乎是同卵双胞胎,所以肯定也可以支持MVVM模式啦~~ 新建一个WeskyViewModel,同时也在里面进行构造函数注入ITest接口,然后开发一个点击事件的绑定方法ClickCommand,用来测试MVVM的事件的双向绑定。点击以后,进行弹窗,弹出Test里面的获取字符串的提示信息,同时做一波Maui自带的依赖注入+MVVM模式的同时验证的效果。

16、Wesky.cs文件里面(设计器代码文件),构造函数添加WeskyViewModel的注入,然后对BindingContext赋值为注入的参数实例,用来提供对MVVM的双向绑定的关联。

17、Wesky.Xaml设计器文件里面,原来的Click事件干掉,改成Command进行绑定刚才定义的ClickCommand方法,用来测试MVVM双向绑定的效果。

18、App的构造函数里面,对Wesky页面进行注入,然后把实例赋值给MainPage,用于依赖注入的实例传递。

19、最后,在Program里面,添加Wesky页面和ViewModel的注册。注册的生命周期,可以根据自己的实际情况进行选择,包括Singleton、Scoped、Transient,跟传统的.NET 6的注册方式一致。

20、然后,运行一下,程序在模拟器里面运行,然后点击按钮以后,效果如图所示。说明依赖注入+MVVM同时验证都通过了。

21、模拟器运行以后,在根目录下,会有对应生成的apk文件,可以拿来安装使用。一个是没有签名版本,一个是签名版本。

22、拷到我的老古董华为鸿蒙系统的手机上,试着安装一下。

23、尴尬了,没成功。没成功的可能性,大概率可能是跟华为的麒麟芯片是基于arm架构的,而模拟器是非arm架构的。以下失败原因,只是其中之一。

24、选择一个arm架构的模拟器,再创建一个,走一波

25、由于本机系统环境原因,没能启动arm架构的模拟器,所以暂告失败~~

26、最后,不用模拟器运行,直接当作Windows桌面程序走一波,效果如图所示。

27、以上就是该文章的全部内容,大佬们如果觉得有帮助,欢迎推荐、留言。也欢迎大佬们感兴趣的,也可关注我的个人公众号:微信公众号搜索【Dotnet Dancer】即可关注。

如果对.NET技术比较感兴趣,也喜欢吹牛聊天,也可以在该文章【https://www.cnblogs.com/weskynet/p/16573873.html】最下方,点击加入QQ群,一起吹牛一起谈人生~

【Maui正式版】创建可跨平台的Maui程序,以及有关依赖注入、MVVM双向绑定的实现和演示的更多相关文章

  1. cocos2d-x 3.0正式版创建project笔记

    cocos2d-x 3.0正式版创建project笔记     不知道Beta版那个高大上的对话框哪里去鸟,正式版又回归到命令行,不知道触碰如此频繁的玩弄追随者的编程习惯是出于什么心理,假设不是为了这 ...

  2. .NET MAUI 正式版GA发布

    .NET MAUI – 一个代码库,多个平台 欢迎使用 .NET 多平台应用 UI.此版本标志着我们统一 .NET 平台的多年旅程中的新里程碑.现在,您和超过 500 万其他 .NET 开发人员拥有了 ...

  3. Flutter 1.0 正式版: Google 的跨平台 UI 工具包

    今天我们非常高兴的宣布,Flutter 的 1.0 版本正式发布!Flutter 是 Google 为您打造的 UI 工具包,帮助您通过一套代码同时在 iOS 和 Android 上构建媲美原生体验的 ...

  4. 使用.net core3.0 正式版创建Winform程序

    前阵子一直期待.net core3.0正式版本的出来,以为这个版本出来,Winform程序又迎来一次新生了,不过9.23日出来的马上下载更新VS,创建新的.net core Winform项目,发现并 ...

  5. 仿vue实现简易版mvvm双向绑定

    项目地址:https://github.com/pangyongsheng/mvvm 1. 指令 vm-bind 单选数据绑定- 将数据显示到标签视图 vm-model : 双向数据绑定 vm-sho ...

  6. cocos2dx 3.0正式版 在mac上新建项目

    触碰科技确定2.x版本号不会再更新了,会一直维护3.x的版本号.于是赶紧看看3.0的,简单浏览一下.类的使用方法和原来的几乎相同,仅仅是 表达的写法变了下,. . . . 以后肯定有非常多变化,速度熟 ...

  7. [ASP.NET Core 3框架揭秘] 依赖注入[4]:一个Mini版的依赖注入框架

    在前面的章节中,我们从纯理论的角度对依赖注入进行了深入论述,我们接下来会对.NET Core依赖注入框架进行单独介绍.为了让读者朋友能够更好地理解.NET Core依赖注入框架的设计与实现,我们按照类 ...

  8. 使用Unity创建依赖注入

        这篇文章翻译自<Dependency Injection With Unity>第三章.文中提到的类似"前几节"的内容您不必在意,相信您可以看懂的. P.S:如 ...

  9. Xcode 6 正式版如何创建一个Empty Application

    Xcode 6 正式版里面没有Empty Application这个模板,这对于习惯了纯代码编写UI界面的程序员来说很不习惯. 有网友给出了一个解决方法是,把Xcode 6 beta版里面的模板复制过 ...

随机推荐

  1. 阿里云OSS + PicGo搭建图床

    1.阿里云 OSS 登录阿里云,进入控制台. 打开侧边栏,找到对象存储 OSS. 右侧找到 Bucket 管理,点击创建 Bucket. 根据引导配置 Bucket 其他同城冗余存储和版本控制等增值服 ...

  2. SpirngBoot 错误(1)

    对于出现该错: Error starting ApplicationContext. To display the conditions report re-run your application ...

  3. django框架9

    内容概要 用户名动态校验 删除二次确认 sweetalert前端插件 django自带的序列化组件 批量数据操作 分页器推导流程 自定义分页器封装代码 自定义分页器使用方法 校验性组件之forms组件 ...

  4. Crontab在服务端进行设置定时执行任务

    Crontab简crontab是一个可以根据时间.日期.月份.星期的组合调度对重复任务的执行的守护进程.也可以讲Linux crontab是用来定期执行程序的命令. 当安装完成操作系统之后,默认便会启 ...

  5. 喜提JDK的BUG一枚!多线程的情况下请谨慎使用这个类的stream遍历。

    你好呀,我是歪歪. 前段时间在 RocketMQ 的 ISSUE 里面冲浪的时候,看到一个 pr,虽说是在 RocketMQ 的地盘上发现的,但是这个玩意吧,其实和 RocketMQ 没有任何关系. ...

  6. UiPath保存图片操作的介绍和使用

    一.保存图像 (Save Image)的介绍 可以将图像保存到磁盘的一种活动 二.保存图像 (Save Image)在UiPath中的使用 1. 打开设计器,在设计库中新建一个Sequence,为序列 ...

  7. sql-关键词的大小写与注释

    是否区分大小写 和 注释 大小写 oracle 自带的sqlplus: mysql 客户端 : Navicat: 注释 oracle 自带的sqlplus: mysql 客户端 : 小节 oracle ...

  8. Python-基础知识汇集

    1.列表 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可 代码理解:列表 ...

  9. AI场景存储优化:云知声超算平台基于 JuiceFS 的存储实践

    云知声是一家专注于语音及语言处理的技术公司.Atlas 超级计算平台是云知声的计算底层基础架构,为云知声在 AI 各个领域(如语音.自然语言处理.视觉等)的模型迭代提供训练加速等基础计算能力.Atla ...

  10. MySQL 锁常见知识点&面试题总结

    节选自 <MySQL 常见知识点&面试题总结> 表级锁和行级锁了解吗?有什么区别? MyISAM 仅仅支持表级锁(table-level locking),一锁就锁整张表,这在并发 ...