WinUI迁移到即将"过时"的.NET MAUI个人体验
迁移的初衷
本人平时是做.net相关的工作,对于.net技术栈也有一些了解,自从新的.net能够跨平台之后,之前也有跨平台的ui框架Xamarin,现在微软推出了.NET MAUI这个说是 统一了开发体验,而且都RC版本了,所以本人也就想着试试看了,于是就想着把前几天的WinUI的demo迁移到MAUI上试试看了。
迁移过程
1. VS启动MAUI开发模块
如图,下载最新的vs2022预览版,然后勾选.NET MAUI。

通过安装这些模块我们就能创建了MAUI的项目了。
2. 创建一个项目
选择如图的项目模板。

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

乍一看和普通的wpf或者uwp再或者winui项目差别不大,主要的区别可能就是多一些依赖项为不同的平台。
3. 确认迁移需要的一些依赖
我之前的WinUI demo用数据存储是LiteDB,这个支持,那基本上就没什么阻碍了,ui显示的话,需要用MAUI提供的一些控件替换掉WinUI里的控件。
MAUI和WinUI的效果对比

左边为MAUI效果,UI其实我是抄了一个dotnet-maui-workshop项目的样式。右边就是一个简单的WinUI控件展示。
迁移貌似没什么阻碍。
遇到的一些问题
目前在写这篇文章的时候.NET MAUI已经是RC3了,之前在RC2的时候有个奇怪的问题,就是从LiteDB读出的流放到图片展示,windows下是正常,在安卓设备上就不正常了。所以当时就没搞了,看了github上的问题区好像是bug,在这个RC3版本修复了,所以在安卓上也能正常显示了。
效果如下图
列表页

详情页

不过好像不推荐用流进行显示,感觉有的列表如果滚动之后好像流不存在了就会展示异常。估计是我的用法不对了。
还有个比较奇怪的地方就是如下图的代码,在windows上能够正常生效,但是在安卓上就会失效。

整体感觉开发体验和wpf体验很像,不过对于一些依赖特定平台的功能需要大家根据具体的平台进行实现了。需要大家了解一些各平台的api。
最后的感受
整体的开发方式确实很舒服,从开始的不太适应,到后面觉得还不错,感觉持续的演进下去会有一个不错的未来吧。希望更多的人参与进来,然后共同完善这个框架。
参考文档和代码地址如下
WinUI迁移到即将"过时"的.NET MAUI个人体验的更多相关文章
- 聊聊两个Go即将过时的GC优化策略
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 这篇文章本来是要讲 Go Memory Ballast 以及 Go GC Tuner 来 ...
- MAUI 初体验 联合 WinForm 让家里废弃的手机当做电脑副品用起来
软件效果图 软件架构草图 效果解释:运行 winform 端后 使用 ctrl+c 先复制任何词语,然后ctrl+空格 就可以将翻译结果显示在 安卓,IOS,windows 甚至 mac 任意客户端 ...
- 用WindowsAppSDK(WASDK)优雅的开发上位机应用
C#开发上位机应用的一些选择 如果你不想看介绍,可以直接跳到优雅开发示例那里. 1. WASDK(WinUI 3) Windows 应用 SDK 是一组新的开发人员组件和工具,它们代表着 Window ...
- Kettle实现数据库迁移
Kettle实现数据库迁移 需求: 做数据仓库时,需要将业务系统CRM抽取到数据仓库的缓冲层,业务系统使用的是SqlServer数据库,数据仓库的缓冲层使用的是mysql数据库,为实现数据库的迁移,即 ...
- kettle实现数据库迁移----多表复制向导
kettle实现数据库迁移----多表复制向导 需求: 做数据仓库时,需要将业务系统CRM抽取到数据仓库的缓冲层,业务系统使用的是SqlServer数据库,数据仓库的缓冲层使用的是mysql数据库,为 ...
- 忙着Windows 10迁移?不要忘记Windows 7的安全!
许多企业已经开始准备向Windows 10迁移了,对于IT管理员来说,Windows 7的安全性不容忽视. 自微软正式停止Windows 7主流支持至今刚刚超过一年,并且其扩展支持将于2010年结束. ...
- 【零基础】风格迁移之deep-painterly-harmonization的安装和使用
注:原项目名叫deep-painterly-harmonization,这里我缩写下称呼其为“DPH” 注:原项目GIT链接:https://github.com/luanfujun/deep-pai ...
- WinUI 3 Preview 3 发布了,再一次试试它的性能
1. WinUI 3 在微软 Build 2020 开发者大会上,WinUI 团队宣布可公开预览的 WinUI 3 Preview 1,它让开发人员可以在 Win32 中使用 WinUI.最终 XAM ...
- 乘风破浪,.Net Core遇见MAUI(.NET Multi-platform App UI),进击现代化跨设备应用框架
什么是MAUI https://github.com/dotnet/maui .NET Multi-platform App UI (MAUI) 的前身是Xamarin.Forms(适用于Androi ...
随机推荐
- Redis++:Redis做分布式锁真的靠谱吗
Redis做分布式锁真的靠谱吗 Redis的分布式锁可以通过Lua进行实现,通过setnx和expire命令连用的方式 || 也可以使用高版本的方法同时设置失效时间,但是假如在以下情况下,就会造成无锁 ...
- CommonCollection1反序列化学系
CommonsCollection1 1.前置知识 1.1.反射基础知识 1.1.1. 对象与类的基础知识 类(class),对象(object) 对象是类的实例化,中华田园犬(object)是狗(c ...
- c语言 相关小知识
软件运行与内存关系(垃圾数据) 内存是在操作系统的统一管理下使用的! 1.软件在运行前需要向操作系统申请访问存储空间,在内存空闲空间足够时,操作系统将分配一段内存空间并将外存中软件拷贝一份存入该内存空 ...
- 位运算符 按位与 &——整数n的二进制数中1的个数
整数n的二进制数中1的个数 编写一个函数,输入是一个整数,返回其二进制表达式中数字位数为 '1' 的个数 代码如下: int func(int n)//char ch { int count = 0; ...
- 三、原理图生成网表并导入PCB放置元件
1.生成网表 2.成功标志 3.新建PCB文件 4.导入网表至PCB 5.导入网表成功标志 6.创建.psm文件(绘制的封装格式为.dra文件,在PCB里面要以.psm的文件存在) 将丝印做成封装需 ...
- Redis 中的过期删除策略和内存淘汰机制
Redis 中 key 的过期删除策略 前言 Redis 中 key 的过期删除策略 1.定时删除 2.惰性删除 3.定期删除 Redis 中过期删除策略 从库是否会脏读主库创建的过期键 内存淘汰机制 ...
- MySQL中MyISAM和InnoDB引擎的区别
区别: 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事 ...
- 将本地项目上传到gitLab操作
在设置好SSH之后,执行下面的操作即可完成: git init // 初始化git status //查看提交文件状态git remote add origin git地址 // 连接 ...
- git clone 遇到的问题
经常遇到这个问题, 所以今天决定把它记录下来 当使用git clone时,会报Please make sure you have the correct access rights and the r ...
- hashlib加密模块、logging日志模块
hashlib模块 加密:将明文数据通过一系列算法变成密文数据 目的: 就是为了数据的安全 基本使用 基本使用 import hashlib # 1.先确定算法类型(md5普遍使用) md5 = ha ...