博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[UWP]涨姿势UWP源码——UI布局
阅读量:4555 次
发布时间:2019-06-08

本文共 2729 字,大约阅读时间需要 9 分钟。

原文:

懒癌晚期兼正月里都是过年,一直拖到今天才继续更新。之前的几篇介绍了数据的来源,属于准备工作。本篇我们正式开始构建涨姿势UWP程序的UI界面。

我们这个Hello World程序比较简单,总共只有一个页面,在PCTablet上呈左右分开,左边以列表显示新闻标题及简述,右边则显示新闻正文。

对于这样的一个布局,Grid无疑是最为合适的Panel,大体是以下的结构:

仔细观察可以发现,左上角参照UWP APP的风格,设置了一个汉堡包菜单,通过点击这个按钮会弹出部分选项:

弹出部分的效果通常都是通过SplitView控件来实现,SplitViewUWP中是横向划分空间的不二法宝,也可以参考系统自带的“邮件”APP,其中嵌套了多层SplitView来实现递进的渐次布局。

可以看到SplitViewPane里放了一个CategoryListContent就放了主体内容的Grid,在IsPaneOpen属性变化为True时,则展开显示。

到目前为止,尚未涉及顶部的绿色工具栏。这里不得不感慨一下,虽然UWP可以做到在不同尺寸的Windows10设备上运行,但是UI的适配确实是很麻烦的,同时考虑到Windows Phone的占有率,UWP APP不出Phone版就不难理解了。

为了能够适配Phone的竖屏界面,使工具栏的按钮能按比列分配到左右两边,同时不被SplitViewPane遮挡。我在SplitView的外层再包了一层Grid,可以看到作为最外层的Grid,仅有两行。工具栏Height=Auto置于顶部,第二行放置SplitView占据剩余空间。

<!-- SplitView -->

这里值得一提的是微软提供了大量系统的icon图标,在XAML中,仅需将FontFamily设置成SymbolThemeFontFamily,同时填写编号,即可使用这些非常精致的系统图标。例如:

具体的icon图标可以参考这两篇:

除了icon图标以外,我们同样可以发现一些的系统定义的样式,比如:

鼠标放在SystemControlBackgroundAccentBrush上,右键菜单点击转到定义,会打开一个genric.xaml,该文件存在大量的系统配色和样式,非常方便且值得使用。

我们也可以增加一些自定义的Style,例如ListViewItemContainerStyle

这里的ItemContainerStyle经常需要自定义样式,一般的做法是通过左侧文档大纲,找到ListView节点,然后再选择“编辑其他模板”->“编辑生成的项目容器(ItemContainerStyle)”,通常会在xaml文件的顶部生成<Page.Resources>节点,其中会包含控件本身的Default Style,在此基础上进行修改事半功倍。

如果需要完全重新定义的模板,例如:ItemTemplate="{StaticResource NavigationItemTemplate}"

假设这个NavigationItemTemplate会在多处使用,那可以考虑将该资源定义在App.xaml中供整个程序使用:

以上就是MainPage.xaml的大概内容分析,下一篇会结合MainPage.xaml.cs的代码来进一步介绍涨姿势UWP的相关内容。

GitHub源代码地址: 

Windows Store

posted on
2017-09-20 13:40 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/7561038.html

你可能感兴趣的文章
面向对象(基础oop)之类与对象
查看>>
border-1px的实现(stylus)如何在移动端设置1px的border
查看>>
CursorFileManager对cursor文件的读写
查看>>
冲刺第十六天
查看>>
251C - Number Transformation
查看>>
201571030139/201571030134《小学生四则运算练习软件需求说明》结对项目报告
查看>>
Framework7—— 混合开发
查看>>
牛逼的永远是向上,不是学习
查看>>
关于C++函数返回局部对象的详细分析
查看>>
URLRewriter修改使你更容易理解重写原理
查看>>
IIS 6中mimemap属性的默认设置
查看>>
AC日记——紧急措施 openjudge 1.7 22
查看>>
Toplevel
查看>>
日历问题
查看>>
ActiveMQ与Spring整合-MessageListener
查看>>
java集合——进度1
查看>>
springMVC_注解方式搭建基础环境
查看>>
团队项目(MVP------新能源无线充电管理网站)(个人任务3)
查看>>
深搜———ZOJ 1004:anagrams by stack
查看>>
快来加入微软技术社区精英计划,提升个人品牌
查看>>