从UWP项目移植到WinUI桌面版你需要做哪些事情
就像文章标题说的我是打算写一篇从UWP移植到WinUI的帖子,本来打算是想写一篇WinUI的学习帖子,可是觉得市面上UWP的教程WPF的教程都是很多了,所以干脆就直接硬怼项目吧,先声明我不是来挖UWP的坟墓的。
话不多说,我是拿第三方的哔哩作为练手项目的,之所以选这个,大家也应该知道,云之幻做的UWP应用颜值也算是上层了,而且他的项目都做了很多的自定义的样式,刚好可以测试WinUI的兼容程度,看微软现在的意思好像对桌面版情有独钟,于是我就先用WinUI桌面版练手了,先上项目地址。
云之幻的原仓库
我移植的仓库
我主要做了哪些事情呢,首先我将uwp涉及的很多的访问网络的服务改成了接口,然后通过.net 自带的DI容器进行管理,用了asp.net core的同志肯定对自带的依赖注入不陌生。本来想把实现也改掉的,想着用.net的api写一遍,但是发现涉及的服务太多了,就放弃了。服务对应的接口如下图所示:

然后通过依赖注入管理服务,继续上图:

整体的首页对比图:

说说一些注意事项:
第一 应用启动默认是采用像WPF那样的窗口,而不是像UWP那样的Page,于是我就通过改造启动方法,将第一个页面换成了Page,然后就可以愉快的像用UWP那样操作了,具体的如下图所示:

第二 如果你的UWP应用样式里使用了很多的CustomResource,请记得在WinUI里面进行删掉,因为我在测试的时候如果不删掉,会提示xaml格式错误,所以大家一定要记得删掉,或者说大家如果找出解决办法,也可以分享下,还有就是比如xaml里的color和font相关的一些结构体,目前好像还没迁移到Microsoft命名空间下,所以有时候需要单独引一下命名空间。
第三 关于应用的弹出层,目前我遇到的弹出层主要包括Content dialog 和那个popup,这个弹出的时候都要设置XamlRoot才能正常弹出,我理解的意思大概就是可能需要设置从谁那开始弹出的吧,需要一个引用关系吧,如图。
Content dialog的弹出

popup的弹出

如果你有UWP和WPF的一点基础,学习WinUI其实只需要看看官方的文档就行了,如果你真的想学WinUI,就看看我的练习仓库的代码吧。
WinUI的学习笔记
从UWP项目移植到WinUI桌面版你需要做哪些事情的更多相关文章
- WinUI桌面版替换UWP项目实际使用
最近做了一个3D打印的RC遥控车.然后就想着用xbox手柄控制小车的前进和转向吧,于是就用surface平板接收收手柄的数据,然后通过串口的2.4G模块传输数据,看上挺简单的,其实本身也挺简单的. 我 ...
- 淘宝UWP桌面版已经发布
目前正在等待应用商店的检测,很快会可以下载. 谢谢各位园主针对淘宝UWP 桌面版(又叫PC版,HD版等等)给予的feedback,在这里统一回复一下,就不一一感谢了. 有一件事需要说明一下,请看下图: ...
- 淘宝UWP桌面版公测-谁需要邀请码?
今天taobaoUWP桌面版上线beta测试了.哪位朋友需要邀请码的,请与我联系. 前提是,您的PC已经升级到Windows 10 10586版本了,否则无法使用. 邀请码数量有限,一人一枚,共20枚 ...
- Cocos2d-x项目移植到WinRT/Win8小记
Cocos2d-x项目移植到WinRT/Win8小记 作者: K.C. 日期: 11/17/2013 Date: 2013-11-17 23:33 Title: Cocos2d-x项目移植到WinRT ...
- Github(1) 桌面版使用
桌面版使用 https://www.cnblogs.com/Chenshuai7/p/5486278.html 1安装 我的账号 1051196347@qq.com 密码 L*******4***** ...
- Github入门 - Github基本使用及Github桌面版使用
知识内容: 1.版本控制 2.Git介绍 3.Github介绍及基本使用 4.Github桌面版介绍及安装 5.Github桌面版基础使用 6.Github桌面版进阶使用 参考: http://www ...
- 愚人的linux内核2440移植札记(超曲折版)
http://blog.csdn.net/dreambegin/article/details/6904822 原来文章叫--编译内核之初体验.后来想了想,这篇文章让我体验了好多遍.不该叫这么大气的名 ...
- Github桌面版使用方式(MAC)
Github是一个流行的代码管理网站,同时也是全球最大的同性交友网站(滑稽).Github网页上你可以自由地托管自己的项目,也可以fork别人的项目过来玩耍,非常之方便,今天笔者就来介绍一下githu ...
- Ubuntu16桌面版编译和安装OpenCV4
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- 查看手机CPU每个APP利用率
adb shell top -m 5
- 树莓派4B安装官方Ubuntu20 Server版(64位)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 翻译:《实用的Python编程》03_03_Error_checking
目录 | 上一节 (3.2 深入函数) | 下一节 (3.4 模块) 3.3 错误检查 虽然前面已经介绍了异常,但本节补充一些有关错误检查和异常处理的其它细节. 程序是如何运行失败的 Python 不 ...
- 解决 DatePickerDialog 在 Android7.0 API24 上使用 AlertDialog.THEME_TRADITIONAL、AlertDialog.THEME_HOLO_DARK、AlertDialog.THEME_HOLO_LIGHT等样式时无法显示为 Spinner 样式的问题
DatePickerDemoForAndroid24 解决 DatePickerDialog 在 Android7.0 API24 上使用AlertDialog.THEME_TRADITIONAL.A ...
- Java 面向对象 02
面向对象·二级 构造方法Constructor概述和格式 * A:构造方法概述和作用 * 给对象的数据(属性)进行初始化 * B:构造方法格式特点 * a:方法名与类名相同(大小也要与 ...
- nginx安装&负载均衡配置&nginx反爬虫&nginx命令
Nginx安装 wget https://nginx.org/download/nginx-1.14.0.tar.gz tar -zxvf nginx-1.14.0.tar.gz cd nginx-1 ...
- Activiti工作流学习笔记(三)——自动生成28张数据库表的底层原理分析
原创/朱季谦 我接触工作流引擎Activiti已有两年之久,但一直都只限于熟悉其各类API的使用,对底层的实现,则存在较大的盲区. Activiti这个开源框架在设计上,其实存在不少值得学习和思考的地 ...
- android分析之Binder 02
分析Java层的ServiceManager,看看Binder在Java层是如何实现的. public final class ServiceManager { private static fina ...
- 设计模式之建造者模式(BuilderPattern)
一.意义 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 说明:复杂对象的构建,比如一个对象有几十个成员属性,那么我们在创建这个对象,并给成员属性赋值时,就会很麻烦.采用 ...
- java面试记很多次还是记不住的问题
1.java底层如何实现多态 https://blog.csdn.net/fan2012huan/article/details/51007517 (1)在常量池中找到方法调用的符号引用 (2)查看P ...