就像文章标题说的我是打算写一篇从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的弹出


如果你有UWP和WPF的一点基础,学习WinUI其实只需要看看官方的文档就行了,如果你真的想学WinUI,就看看我的练习仓库的代码吧。
posted @
2021-05-04 18:39
绿荫阿广
阅读(
1275)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库