开发者社区> zting科技> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【完全开源】知乎日报UWP版:项目结构说明、关键源代码解释

简介:
+关注继续查看

目录

 

说明

上一篇博客将源码放出来了,但是并没有做过多的介绍,所以如果自己硬看可能需要花费很长的时间,尤其这些代码并不是自己写的。项目不算复杂但是也不算简单,这篇文章我尽我所能将整个项目结构、关键的代码全部解释一下,希望能给对本项目感兴趣的童鞋、以及那些UWP初学者一些帮助。

背景了解

【完全开源】知乎日报UWP(上篇):界面设计、官方API分析。

【完全开源】知乎日报UWP(下篇):商店APP、github源码。Windows APP良心出品。

github源码

商店APP

 

项目结构

项目截图

类型说明

ZhiHuDaily.UWP.Core.Controls

里面只有一个SwipeableSplitView控件,该控件继承自SplitView。该控件来自github:https://github.com/JustinXinLiu/SwipeableSplitView

ZhiHuDaily.UWP.Core.Data

支持自增式加载的集合,继承自ObservableCollection,并且实现了ISupportIncrementalLoading接口。一共4个:

  • CollectionsStoriesIncrementalLoadingCollection(对应收藏页面文章列表)
  • HomeStoriesIncrementalLoadingCollection(对应主页文章列表)
  • StoryCommentsIncrementalLoadingCollection(对应评论页面评论(长/短)列表)
  • ThemeStoriesIncrementalLoadingCollection(对应主题日报页面列表)

ZhiHuDaily.UWP.Core.Https

对Web API接口的封装,包含Web API URL、HTTP请求、JSON序列化。

ZhiHuDaily.UWP.Core.Models

用到的所有实体类。注意每个实体类并没有对应到返回的Json数据体(因为返回的Json中很多字段都没有使用到)。

ZhiHuDaily.UWP.Core.Share

微信分享相关的代码。以后新增的其他分享(如QQ分享、微博分享)的代码都可以放在这里。

ZhiHuDaily.UWP.Core.Tools

工具类。网络类型管理类、文件管理类、Dispatcher管理类(解决非UI线程更新数据源引起的bug)。

ZhiHuDaily.UWP.Core.ViewModels

用到的所有ViewModel。基本每个页面对应一个ViewModel。命名规则跟Xaml页面一致(将Page改为ViewModel)

 

ZhiHuDaily.UWP.Mobile

所有的Page页面。

UI页面

包含以下(按项目结构从上到下):

CollectionPage.Xaml

收藏页面,使用到了ListView控件、自增式集合
EditorsPage.Xaml

主编列表页面,使用到了ListView控件
HomePage.Xaml

主页,使用到了ListView、FlipView控件,自增式集合
RecommendersPage.Xaml

推荐者列表页面,使用到了ListView控件
  • SettingPage.Xaml

  • 设置页面,使用到的都是普通控件
SplashPage.Xaml

启动页面,使用到的都是普通控件
StoryCommentPage.Xaml

文章评论页面,使用到了Pivot控件、ListView控件,自增式集合
StoryPage.Xaml

文章内容页面,使用到了WebView控件,自己格式化HTML
ThemePage.Xaml

主题日报页面,使用到了ListView控件,自增式集合

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

关键技术

粗略的总结一下,大概用到了以下技术:

  • Data Binding。这个必须会,wpf、uwp开发都要用到;
  • 页面导航。Frame.Navigate()、Frame.GoBack()等等,导航时传参;
  • 页面缓存。NavigationCacheMode枚举值;
  • HttpClient类型的使用。主要是get请求;
  • Json格式化。在.NET中很方便,using Windows.Data.Json;
  • 缓存处理。我做的很粗糙,大概就是将不变的内容下载下来后存成json格式文本,下载直接使用,包括图片也是,并没有将url直接赋值给Image.Source属性;
  • 自增式加载。这个也是重点,大概就是要实现ISupportIncrementalLoading这个接口,具体的做法参考源代码;
  • 依赖属性注册。有的控件并没有某个属性,导致我们不能使用Data Binding(数据绑定),这时候就需要给控件注册一个属性;
  • MVVM模式。这个不用说,不过我项目中并没有严格按照这个来;
  • WebView控件的使用。WebView很强大,参照我之前的一篇博客:WebView做聊天框
  • 微信分享。参考微信官方文档即可,怎样唤醒APP,参考这篇博客:APP之间的数据交互

其它没什么。至于页面Xaml的编写,这个要熟,多写写,就能控制好格式,就像你写html/css一样。

 

演示视频

上一篇博客中有一个视频,但是不清楚,后来录了一个稍微清楚的:

 

开源有益,多谢点赞!

作者:周见智 
出处:http://www.cnblogs.com/xiaozhi_5638/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

分类: UWP

本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/5099407.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
辣条社区:问题解答、面试系列、求职助力、学习资源,你需要的都在这里
辣条社区:问题解答、面试系列、求职助力、学习资源,你需要的都在这里
24 0
IaaS开源软件之zstack(OSC中国开源项目的TOP30)
全新的开源IaaS国产开源软件—zstack曾于2020年在OSC(中国最权威,最大的开源项目评选中斩获TOP30。 IaaS(基础设施即务)提供传统的计算能力服务以及存储服务,是最简单的云计算交付模式。相对于传统的主机托管上,IaaS在服务的灵活性上面,以及成本等方面占有一定的优势。但是也常常便随着一些问题,比如有关IaaS软件的稳定性,以及相关复杂度,延展性,复杂度,以及灵活性等方面有一定的不足。
144 0
React Native之js同步调用安卓原生方法@ReactMethod(isBlockingSynchronousMethod = true)
React Native之js同步调用安卓原生方法@ReactMethod(isBlockingSynchronousMethod = true)
130 0
SVN更新Cleanup提示database is locked
之前使用svn更新代码的时候遇到的问题
339 0
阿里淘系优质开源项目推荐(下)
开源推动着互联网技术的发展。多年来,阿里巴巴淘系技术一直积极拥抱开源事业,无论是开源软件的应用、回馈以至自研技术的开源都非常活跃,近两年我们更是开源了MNN、飞冰ICE、3D-FUTURE & 3D-FRONT 等项目,在开源社区中,也获得了广泛开发者的支持和使用。 还记得《阿里淘系优质开源项目推荐(上)》文末的问题吗?你知道淘系还有哪些开源项目?大家的留言橙子也看到了~现在就来揭晓正确答案。(文末有惊喜!!!)
106 0
收集的网络上大型的开源图像处理软件代码(提供下载链接)
要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益、多面出击。如今网络发达,图像学的资料其实也到处都是。只是往往个人能力或精力有限,在短时间内无法找到那些也许藏于角落里的金子。
969 0
[学习日记]重构简易RSSREADER的UML类图
这几天在学UML,找到一个不错的工具trufun plato ,一个国产的UML软件,用起来很爽哈!刚学UML,才看书十多页,无聊,按自己乱想画了个前面做的RSSREADER的类图发上来,算是学习记念吧,过些日子看了,多半自己要喷饭!
668 0
+关注
3549
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载