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

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


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


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


1995789-20220810192605138-1267020453.png

 

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


1995789-20220810192911088-789179009.png

 

C、让网络飞一会儿。


1995789-20220810192955958-1581825808.png

 

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

 1995789-20220810193143755-979172804.png


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


1995789-20220810193318795-547637175.png

 

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


1995789-20220810193637844-310547491.png

 

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


1995789-20220810193815857-651053800.png

 

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

 1995789-20220810194049866-626875844.png


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


1995789-20220810194203612-681168967.png

 

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


1995789-20220810194237922-575537695.png

 

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


1995789-20220810194340352-820561204.png

 

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


1995789-20220810194459485-1748822490.png

 

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


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


1995789-20220810194905164-834802682.png

 

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


1995789-20220810195208657-1912937716.png


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


1995789-20220810195730192-1791592838.png


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


1995789-20220810200153193-1891897183.png


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


1995789-20220810200340960-865192220.png

 

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


1995789-20220810201320933-1798447368.png


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


1995789-20220810202323315-2095424604.png

 

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


1995789-20220810202650647-1764795160.png


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


1995789-20220810202833998-262630097.png


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


1995789-20220810202953957-1141024741.png

 

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


1995789-20220810203212700-49014264.png


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


 1995789-20220810203315364-964195111.png


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


1995789-20220810203550958-1212314249.jpg


23、尴尬了,没成功。没成功的可能性,大概率可能是跟华为的麒麟芯片是基于arm架构的,而模拟器是非arm架构的。


1995789-20220810221211807-158301412.jpg


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


1995789-20220810203905114-49450306.png


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


 1995789-20220810203943027-1195985910.png


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


1995789-20220810204035230-1360062312.png


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


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


目录
相关文章
|
3月前
|
C# Python
使用wxpython开发跨平台桌面应用,对wxpython控件实现类似C#扩展函数处理的探究
【10月更文挑战第30天】使用 `wxPython` 开发跨平台桌面应用时,可以通过创建辅助类来模拟 C# 扩展函数的功能。具体步骤包括:1. 创建辅助类 `WxWidgetHelpers`;2. 在该类中定义静态方法,如 `set_button_color`;3. 在应用中调用这些方法。这种方法提高了代码的可读性和可维护性,无需修改 `wxPython` 库即可为控件添加自定义功能。但需要注意显式调用方法和避免命名冲突。
|
5月前
|
编译器 C# Android开发
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
421 8
|
6月前
|
开发框架 前端开发 JavaScript
基于SqlSugar的开发框架循序渐进介绍(15)-- 整合代码生成工具进行前端界面的生成
基于SqlSugar的开发框架循序渐进介绍(15)-- 整合代码生成工具进行前端界面的生成
|
6月前
|
存储 开发框架 前端开发
利用代码生成工具快速生成基于SqlSugar框架的Winform界面项目
利用代码生成工具快速生成基于SqlSugar框架的Winform界面项目
|
6月前
|
开发框架 前端开发 JavaScript
基于SqlSugar的开发框架循序渐进介绍(18)-- 基于代码生成工具Database2Sharp,快速生成Vue3+TypeScript的前端界面和Winform端界面
基于SqlSugar的开发框架循序渐进介绍(18)-- 基于代码生成工具Database2Sharp,快速生成Vue3+TypeScript的前端界面和Winform端界面
|
开发框架 Dart 数据可视化
鸿蒙全新声明式UI框架ArkUI初体验,开发应用不错,比起flutter如何
鸿蒙全新声明式UI框架ArkUI初体验,开发应用不错,比起flutter如何
C# Xamarin数据绑定入门基础
C# Xamarin数据绑定入门基础
184 0
|
前端开发 C# 数据格式
C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码
原文:C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.
1289 0
|
C# Android开发 iOS开发
C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件..很很很很重要..),附源码
原文:C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件..很很很很重要..),附源码 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.
1308 0
|
C#
C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码
原文:C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.
1327 0