• WinUI迁移到即将"过时"的.NET MAUI个人体验


    迁移的初衷

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

    迁移过程

    1. VS启动MAUI开发模块

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

    vs-maui

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

    2. 创建一个项目

    选择如图的项目模板。

    create-proj

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

    img

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

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

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

    MAUI和WinUI的效果对比

    img

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

    迁移貌似没什么阻碍。

    遇到的一些问题

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

    效果如下图

    列表页

    img

    详情页

    img

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

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

    img

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

    最后的感受

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

    参考文档和代码地址如下

    文档的代码地址

    什么是 .NET MAUI?

    dotnet-maui-workshop

    dotnet-podcasts

  • 相关阅读:
    再现ORA-600 4000故障处理---惜分飞
    core dump(介绍,status中的core dump标志,应用--调试),ulimit命令
    Python搭建http下载服务器
    大数据培训课程MapReduce编程规范
    编写.NET的Dockerfile文件构建镜像
    查看Docker镜像启动命令
    redmine安装插件提示Tasks: TOP => redmine:plugins:migrate => environment
    Migrations
    ch3_6多线程举例
    多功能手持VH501TC采集仪如何处理监测数据
  • 原文地址:https://www.cnblogs.com/GreenShade/p/16270867.html