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 ...
随机推荐
- centos安装服务参考博客,亲测可用
centos 安装nginx参考 日志log报错 nginx -c /etc/nginx/nginx.conf https://blog.csdn.net/weixin_41004350/articl ...
- 一道关于压缩包的ctf题目(包括暴力破解,明文攻击,伪加密)
关于题目附件 链接:https://pan.baidu.com/s/1PRshlizSndkgxkslnqJrHA 提取码:p76e zip三连击 下载附件得到题目 手机号码一般是11位,那么我们设置 ...
- 《CSS世界》笔记二:盒模型四大家族
上一篇:<CSS世界>笔记一:流/元素/尺寸下一篇:<CSS世界>笔记三:内联元素与对齐 写在前面 在读<CSS世界>第四章之前,粗浅的认为盒模型无非是margin ...
- 微信小程序:自定义组件的数据传递
一.前言 如果小程序中有可复用的UI且具有一定的功能性,就可以使用自定义组件将其封装起来.下面介绍一个简单的组件和一个复杂的组件. 二.简单的组件(计数器) 1. 组件功能介绍 这个组件常见于外卖软件 ...
- java中自动插入一个默认的构造函数,这到底怎么回事?
1.2 当没有任何构造函数,java编译器,会插入一个默认的构造函数 见下面的例子: class Line { double x = 0.02; double y; } publ ...
- js获取url查询字符串参数
最近看js高级程序设计 对其中查询字符串参数的获得重新写了,当传递一个完整的URL的时候对查询字符串的提取 function getQueryArgs(){ var qs = (location.se ...
- Python入门-常用模块
1.sys,os import sys import os #获取当前的路径 print(sys.path[0]) print(os.getcwd()) print(os.path.abspath(& ...
- Oracle临时表空间语句、作用
在Oracle数据库中:一个表空间只属于一个数据库使用:而一个数据库可以拥有多个表空间.属于"一对多"的关系 我们对照着mysql来理解. 1.Oracle有表空间,mysql没有 ...
- MySQL存储引擎、基础数据类型、约束条件
MySQL存储引擎 存储引擎 # 存储引擎可以堪称是处理数据的不同方式 # 查看存储引擎的方式 show engines; # 需要掌握的四个存储引擎 MyISAM MySQL5.5之前的默认的存储引 ...
- 制作Unity中的单位血条
本文章用于记录Unity的学习过程,如有疑问,欢迎交流. 1.血条的显示 在Unity场景中创建空物体,然后新建两个Image(图片),当然只用一个也行,一个作为填充来显示血量,一个作为血条的外框. ...