WinUI迁移到.NET MAUI个人体验

迁移的初衷

本人平时是做.net相关的工作,对于.net技术栈也有一些了解,自从新的.net能够跨平台之后,之前也有跨平台的ui框架Xamarin,现在微软推出了.NET MAUI这个说是 统一了开发体验,而且都RC版本了,所以本人也就想着试试看了,于是就想着把前几天的WinUI的demo迁移到MAUI上试试看了。

迁移过程

1. VS启动MAUI开发模块

如图,下载最新的vs2022预览版,然后勾选.NET MAUI。

7a10f44e6f8c6d66a2a80b14bfb40183.png

通过安装这些模块我们就能创建了MAUI的项目了。

2. 创建一个项目

选择如图的项目模板。

7e03debce4a932d5bb99bf3a4ebb0684.png

创建完成之后项目结构如下图。

77016a007a7a0d655355cb7eb7cdb746.png

乍一看和普通的wpf或者uwp再或者winui项目差别不大,主要的区别可能就是多一些依赖项为不同的平台。

3. 确认迁移需要的一些依赖

我之前的WinUI demo用数据存储是LiteDB,这个支持,那基本上就没什么阻碍了,ui显示的话,需要用MAUI提供的一些控件替换掉WinUI里的控件。

MAUI和WinUI的效果对比

530a8ddfe52c412042de834000f5a637.png

左边为MAUI效果,UI其实我是抄了一个dotnet-maui-workshop项目的样式。右边就是一个简单的WinUI控件展示。

迁移貌似没什么阻碍。

遇到的一些问题

目前在写这篇文章的时候.NET MAUI已经是RC3了,之前在RC2的时候有个奇怪的问题,就是从LiteDB读出的流放到图片展示,windows下是正常,在安卓设备上就不正常了。所以当时就没搞了,看了github上的问题区好像是bug,在这个RC3版本修复了,所以在安卓上也能正常显示了。

效果如下图

列表页

935eaa5f2eed53a2affcd1a747e27df6.png

详情页

8d587d5b1d9f90362c43fa29aeb377d8.png

不过好像不推荐用流进行显示,感觉有的列表如果滚动之后好像流不存在了就会展示异常。估计是我的用法不对了。

还有个比较奇怪的地方就是如下图的代码,在windows上能够正常生效,但是在安卓上就会失效。

dad5d04973734bce7d7ea9021adefc57.png

整体感觉开发体验和wpf体验很像,不过对于一些依赖特定平台的功能需要大家根据具体的平台进行实现了。需要大家了解一些各平台的api。

最后的感受

整体的开发方式确实很舒服,从开始的不太适应,到后面觉得还不错,感觉持续的演进下去会有一个不错的未来吧。希望更多的人参与进来,然后共同完善这个框架。

参考文档和代码地址如下

文档的代码地址:https://github.com/GreenShadeZhang/dotnet-maui-tutorial-code

什么是 .NET MAUI?:https://docs.microsoft.com/zh-cn/dotnet/maui/what-is-maui

dotnet-maui-workshop:https://github.com/dotnet-presentations/dotnet-maui-workshop

dotnet-podcasts:https://github.com/microsoft/dotnet-podcasts

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

祝CSDN2021牛气冲天祝我也拨云散雾

前言 2020年4月,我写了一篇用turtle绘制《小清新风格的树》,反响挺好。现在打算使用turtle修改一下绘制方式,因为线条的绘制太过考虑因素过多,如果使用方块进行堆叠,绘制出来的形状可以如马赛克一样,既符合…

Android之Only fullscreen opaque activities can request orientation

1 问题 使用透明的activity主题,并且固定了方向,在Android8.0手机上提示错误如下 Only fullscreen opaque activities can request orientation 2 解决办法 简单粗暴就是去在AndroidManifest.xml文件去掉当前activity配置的里面的横竖屏方向设置 and…

wamp5.5.12安装re dis扩展

转载地址:http://hanqunfeng.iteye.com/blog/1984387 phpredis是个人觉得最好的一个php-redis客户端,因为其提供的function与redis的命令基本一致,降低的了学习成本,同时功能也很全面。 一。linux安装方法 phpredis下载地址&#…

java 数组转bean_json数组转java对象怎么转

展开全部首先需要 commons-beanutils jar包,然后转bean的方法为:62616964757a686964616fe59b9ee7ad9431333363386133/**** Title: transMap2Bean* param:param map* param:param obj* return:void* Description&#x…

FPGA图案--数字表示(代码+波形)

在数字逻辑系统,仅仅存在高低。所以用它只代表一个整数数字。并且有3代表性的种类。这是:原码表示(符号加绝对值值)、反码表示(加-minus标志)而补码(符号加补)。这三个在FPGA中都有着广泛的应用。以下分别讨论。1、原码表示法 原码表示法是机器数的一种简…

WPF效果第一百八十四篇之网页视频保存

一年一度的小学入学采集开始了;我一朋友很是头大,他说头都大了好几圈了;既要准备各种入学材料又要听线上专人视频直播讲解;然而在直播结束后,他发现自己仍是一脸疑惑;虽说直播有回访吧,但是他那蜗牛网速简直了;这时他场外找我,让我看能不能给他自己下载一份;1、毕竟第一次,直接…

【遥感数字图像处理】基础知识:第一章 绪论

第一章 绪 论 ◆ 课程学习要求 主要教学内容:遥感数字图像处理的概念和基础知识,遥感数字图像的几何处理,遥感图像的辐射校正,遥感数字图像的增强处理,遥感图像的计算机分类,遥感数字图像的分析方法&…

Android之Canvas的drawRoundRect()

1 问题 Canvas的drawRoundRect()函数怎么用 public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) 功能:该方法用于在画布上绘制圆角矩形,通过指定RectF对象以及圆角半径来实现。float rx:生成圆角的椭圆的X轴半径 float ry:生成圆角的椭圆的Y轴半径…

201671010128 2017-10-08《Java程序设计》之Lambda与内部类

一、基本概念 Java Lambda 表达式是 Java 8 引入的一个新的功能,主要用途是提供一个函数化的语法来简化编码。Lambda表达式本质上是一个匿名方法。Java Lambda 表达式以函数式接口为应用基。内部类(inner class)是定义在另一个类内部的类。二、几点注意 使用内部类的…

自定义Git

在安装Git一节中,我们已经配置了user.name和user.email,实际上,Git还有很多可配置项。 比如,让Git显示颜色,会让命令输出看起来更醒目: $ git config --global color.ui true这样,Git会适当地显…

java抽象方法实例_Java的抽象方法和抽象类实例详解

本文实例讲述了Java的抽象方法和抽象类。分享给大家供大家参考,具体如下:一 点睛抽象方法是只有方法签名,没有方法实现的方法。抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能被定义为抽象类,抽象类…

[python opencv 计算机视觉零基础到实战] 九、模糊

一、学习目标 了解什么是卷积了解模糊的使用方法与应用 如有错误欢迎指出~ 二、了解模糊的应用 上一篇:[python opencv 计算机视觉零基础到实战] 八、ROI泛洪填充 2.1 了解卷积是什么 在本节中,卷积我们不过多的进行深入讲解,我本人对卷积也只是稍…

windows update更新失败 安全模式进不去

今天一同事的电脑遇到问题了,提示“windows update更新失败”。最后一次正确配置不行, 安全模式进不去。解决方法:强制关机开机后F8启动修复模式(系统盘或者pe进入也可以),系统还原,找最后的还原…

windbg的时间旅行实现对 C# 程序的终极调试!

一:什么是时间旅行 简而言之就是把程序的执行流拍成vlog,这样就可以对 vlog 快进或者倒退,还可以分享给别人做进一步的分析,是不是想都不敢想。很开心的是 windbg preview 版本中已经实现了,叫做 时间旅行调试 TTD&…

【神经网络】神经网络结构在命名实体识别(NER)中的应用

命名实体识别(Named Entity Recognition,NER)就是从一段自然语言文本中找出相关实体,并标注出其位置以及类型,如下图。它是NLP领域中一些复杂任务(例如关系抽取,信息检索等)的基础。…

centos安装禅道的步骤

1、下载 XAMPP 套件: https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/stats/timeline 下载的文件是 xampp-linux-x64-7.0.6-0-installer.run 2、 执行 ./xampp-linux-x64-7.0.6-0-installer.run 3、 启动 /opt/lampp/lampp start 4、 下载禅道 ZenTa…

[python opencv 计算机视觉零基础到实战] 十、图片效果毛玻璃

一、学习目标 了解高斯模糊的使用方法了解毛玻璃的图片效果添加了解如何自己做一个噪声图片 上一篇:[python opencv 计算机视觉零基础到实战] 九、模糊 如有错误欢迎指出~ 二、了解模糊与美颜 2.1 使用高斯模糊降噪 由于很多小伙伴反应抛开原理或理论讲解使用用法对于初学…

Android之自定义View实现带4圆角或者2圆角的效果

1 问题 实现任意view经过自定义带4圆角或者2圆角的效果 2 原理 1) 实现view 4圆角 我们只需要把左边的图嵌入到右边里面去,最终显示左边的图就行。 2) 实现view上2圆角 我们只需要把左边的图嵌入到右边里面去,最终显示左边的图就行。 安卓源码里面有这样的类 package and…

java trim()函数_Java - split()函数和trim()函数的使用方法

split()函数和trim()函数的使用方法本文地址: http://blog.csdn.net/caroline_wendy/article/details/24465141详细參考Java API: http://docs.oracle.com/javase/6/docs/api/java/lang/String.htmlsplit()函数是依据參数如",", "-", " "等, 切割…