就像文章标题说的我是打算写一篇从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桌面版你需要做哪些事情的更多相关文章

  1. WinUI桌面版替换UWP项目实际使用

    最近做了一个3D打印的RC遥控车.然后就想着用xbox手柄控制小车的前进和转向吧,于是就用surface平板接收收手柄的数据,然后通过串口的2.4G模块传输数据,看上挺简单的,其实本身也挺简单的. 我 ...

  2. 淘宝UWP桌面版已经发布

    目前正在等待应用商店的检测,很快会可以下载. 谢谢各位园主针对淘宝UWP 桌面版(又叫PC版,HD版等等)给予的feedback,在这里统一回复一下,就不一一感谢了. 有一件事需要说明一下,请看下图: ...

  3. 淘宝UWP桌面版公测-谁需要邀请码?

    今天taobaoUWP桌面版上线beta测试了.哪位朋友需要邀请码的,请与我联系. 前提是,您的PC已经升级到Windows 10 10586版本了,否则无法使用. 邀请码数量有限,一人一枚,共20枚 ...

  4. Cocos2d-x项目移植到WinRT/Win8小记

    Cocos2d-x项目移植到WinRT/Win8小记 作者: K.C. 日期: 11/17/2013 Date: 2013-11-17 23:33 Title: Cocos2d-x项目移植到WinRT ...

  5. Github(1) 桌面版使用

    桌面版使用 https://www.cnblogs.com/Chenshuai7/p/5486278.html 1安装 我的账号 1051196347@qq.com 密码 L*******4***** ...

  6. Github入门 - Github基本使用及Github桌面版使用

    知识内容: 1.版本控制 2.Git介绍 3.Github介绍及基本使用 4.Github桌面版介绍及安装 5.Github桌面版基础使用 6.Github桌面版进阶使用 参考: http://www ...

  7. 愚人的linux内核2440移植札记(超曲折版)

    http://blog.csdn.net/dreambegin/article/details/6904822 原来文章叫--编译内核之初体验.后来想了想,这篇文章让我体验了好多遍.不该叫这么大气的名 ...

  8. Github桌面版使用方式(MAC)

    Github是一个流行的代码管理网站,同时也是全球最大的同性交友网站(滑稽).Github网页上你可以自由地托管自己的项目,也可以fork别人的项目过来玩耍,非常之方便,今天笔者就来介绍一下githu ...

  9. Ubuntu16桌面版编译和安装OpenCV4

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. Markdown(2)基本语法

    ​ Markdown 是一种轻量级标记语言 , 通过简单的标记语法,使文本内容具有一定的格式 . 一.段落 1. 标题 语法格式: 符号 "#" 可以标记 1~6级标题.一级标题对 ...

  2. 在Windows服务中添加定时器

    创建windows服务: 在VisualStudio中用C#创建一个Windows服务,微软MSDN参考地址: http://msdn.microsoft.com/zh-cn/library/zt39 ...

  3. jquery通过live绑定toggle事件

    $("a[name=reply]").live("click",function(){ $(this).toggle( function () { var $c ...

  4. 关于安装VMware以及Linux操作系统过程

    想用Linux完成部分教学作业,虚拟机是少不了的,所以首先选择了VMware进行安装. VMware在官网下载之后,就可以直接打开安装,但是在安装过程中,建议不要勾选启动时检查产品更新和加入VMwar ...

  5. mpvue 开发微信小程序搭建项目

    首先 mpvue 是一款基于vue的框架,mpvue 修改了 Vue.js 的 runtime 和 compile 实现,可以运行在小程序的环境中. 第一步:安装 vue-cli vue-cli是vu ...

  6. DLL劫持学习及复现

    0x01 dll简介 在Windows系统中,为了节省内存和实现代码重用,微软在Windows操作系统中实现了一种共享函数库的方式.这就是DLL(Dynamic Link Library),即动态链接 ...

  7. C#中事件流程的简单理解

    C#中事件流程的简单理解 C#中事件基于委托,要理解事件要先理解委托,但是现在我还没想好怎么写委托,如果不懂委托可以先找找委托的文章 事件基于委托,为委托提供了一种发布/订阅机制 一上来就是这句话,很 ...

  8. there is nothing(i春秋CTF题解)

      (1)打开页面,显示为:there is nothing (2)抓包发现提示 (3)hint:ip,Large internal network 意为最大的内网网段IP,hint: ip,Larg ...

  9. vue 实现页面嵌套pdf之vue-pdf插件

    近期vue移动端项目中遇到了页面内,嵌套展示pdf内容.实现方法很多种,可以用iframe嵌套,但不利于引擎优化seo.所以在网上找到了vue-pdf这个插件,这个插件非常好用,其中封装的方法也很多, ...

  10. js输入框只能输入数字

    1.只允许输入数字 <input type="text"  onkeyup="this.value=this.value.replace(/\D/g,'')&quo ...