1

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

 2 years ago
source link: https://www.cnblogs.com/weskynet/p/16573873.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

前言: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群,一起吹牛一起谈人生~


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK