老周在上一篇文章中介绍过了自适应磁贴的基本结构,以及给大家演示了一些例子。

本文老周给大伙伴们说说自适应磁贴的另一个特点——分组呈现。

当磁贴的内容被分组后,每个组中的内容就会被视为一个整体。比如某磁贴在更新时定义了其内容包含有两个组,有些设备(比如手机、上世纪70年代的电脑、小霸王学习机等)的分辨率较低,磁贴不能显示两个组的信息,于是就会把第一组的内容整个显示出来,第二组信息就被忽略。就算空间不够,连第一组的内容都显示不全,然而一个组会被视为一个整体,不管空间够不够,第一组都要全部呈现。如果空间相当充足,当然两个分组的内容都会显示出来。

分组的方法是在binding元素下使用1个或n个group元素,每个group元素代表一组。对于单个group元素而言,它的子元素必须是subgroup(子组)元素,数量可以为n个,但至少你得有一个subgroup元素。正因为如此,group元素下面最少最少都会有一个subgroup元素。

先给大伙看一个例子。

<tile>
<visual>
<binding template="TileMedium">
<group>
<subgroup>
<text hint-style="subtitle">第一组</text>
<text>今天天气真好。</text>
</subgroup>
</group>
<group>
<subgroup>
<text hint-style="subtitle">第二组</text>
<text>天上的白云真白。</text>
</subgroup>
</group>
</binding>
</visual>
</tile>

上面定义的这个磁贴,分为两个组,每个组中都有两个text元素来呈现文本,虽然group中不打算设置子分组,但必须有一个subgroup,因为group元素的子元素必须为subgroup

得到的磁贴如下图所示。

在一个group中,实际上一个subgroup可以理解为一列,因为subgroup元素有一个hint-weight属性,这个属性用来定义该subgroup的比重,这个比重实际上是该subgroup的宽度所占的比例。所以说,subgroup其实是用来定义列的。

大家应该会用XAML中的Grid控件,大家不妨想想,Grid在划分行和列的时候,是不是有一个按比例划分的方法。比如第一行为1*,第二行为2*,那就是把行的所有空间均分为3等份,第一行占1/3,第二行占2/3。

hint-weight的原理是一样的,但是,它不用写“*”,比如,一个组中有两个subgroup,每个subgroup的hint-weight的值都为1,那么每个subgroup的宽度将相等,各占50%。

再如,三个subgroup,设置它们的hint-weight属性。第一个为2,第二个为1,第三个为3,即把所有空间平均分为6份,第一列占2/6,第二列占1/6,第三列占3/6。

请看下面的例子:

<tile>
<visual>
<binding template="TileWide">
<group>
<subgroup hint-weight="1">
<image src="ms-appx:///Assets/images/关羽.png" hint-removeMargin="true"/>
<text hint-align="center" hint-style="body">关羽</text>
</subgroup>
<subgroup hint-weight="1">
<image src="ms-appx:///Assets/images/张飞.png" hint-removeMargin="true"/>
<text hint-align="center" hint-style="body">张飞</text>
</subgroup>
<subgroup hint-weight="1">
<image src="ms-appx:///Assets/images/曹操.png" hint-removeMargin="true"/>
<text hint-align="center" hint-style="body">曹操</text>
</subgroup>
<subgroup hint-weight="1">
<image src="ms-appx:///Assets/images/孙坚.png" hint-removeMargin="true"/>
<text hint-align="center" hint-style="body">孙坚</text>
</subgroup>
<subgroup hint-weight="1">
<image src="ms-appx:///Assets/images/袁绍.png" hint-removeMargin="true"/>
<text hint-align="center" hint-style="body">袁绍</text>
</subgroup>
</group>
</binding>
</visual>
</tile>

每个subgroup的hint-weight的值都为1,表明磁贴将一个组的水平空间平分为5列,每列显示图像和文本。
大家注意到,这里image元素设置了一个hint-removeMargin属性为true,表示删除图像的边距。如果为false,表示保留边距。默认情况下,图像周围的边距为8,由于这个磁贴内容多,比较拥挤,所以要去掉图像默认的边距。

磁贴更新后如下图所示。

再看下面一例:

<tile>
<visual>
<binding template="TileWide">
<group>
<subgroup hint-weight="1">
<image src="ms-appx:///Assets/images/曹操.png" hint-removeMargin="true" />
</subgroup>
<subgroup hint-weight="5">
<image src="ms-appx:///Assets/images/袁绍.png" hint-removeMargin="true" />
</subgroup>
<subgroup hint-weight="3">
<image src="ms-appx:///Assets/images/孙坚.png" hint-removeMargin="true" />
</subgroup>
</group>
</binding>
</visual>
</tile>

一个分组中有三个subgroup,即三列,所有空间被划分为9等份,第一列占其中1份,第二列占5份,第三列占3份。
磁贴更新后如下图。

另外,hint-weight属性还可以使用百分比来划分列,方法是指定的所有subgroup的weight值加起来刚好等于100,这时候就会被识别为百分比。

看例子。

<tile>
<visual>
<binding template="TileWide">
<group>
<subgroup hint-weight="70">
<image src="ms-appx:///Assets/images/张飞.png" hint-removeMargin="true" />
</subgroup>
<subgroup hint-weight="30">
<image src="ms-appx:///Assets/images/袁绍.png" hint-removeMargin="true" />
</subgroup>
</group>
</binding>
</visual>
</tile>

第一列的比重为70,第二列的比重为30,加起来正好是100,所以识别为百分比。
磁贴更新后的结果如下图:

好了,本文的牛皮就吹到这里。

示例源代码下载

【Win10应用开发】自适应磁贴中的分组的更多相关文章

  1. Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构

    分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...

  2. Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

    安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...

  3. Win10 UWP开发系列:实现Master/Detail布局

    在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档: ...

  4. 分享 Ionic 开发 Hybrid App 中遇到的问题以及后期发布 iOS/Android 的方方面面

    此篇文章主要整理了最近在使用 Ionic 开发 Hybrid App 过程中遇到的一些疑难点以及后期发布生成 iOS 和 Android 版本过程中的种种问题. 文章目录 Ionic 简介和项目需求介 ...

  5. Win10/UWP开发—使用Cortana语音与App后台Service交互

    上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...

  6. C#-MVC开发微信应用(6)--用户分组信息管理

    让我们继续深入探索这方面的技术,为了更好的应用起来,专心做好底层的技术开发.本篇继续上一篇的介绍,主要介绍分组管理方面的开发应用,这篇的内容和上一篇,作为一个完整的用户信息和分组信息管理的组合. 1. ...

  7. UWP Windows10开发更新磁贴和动态更新磁贴

    下面将介绍两种方式如何在windows10 uwp开发中如何更新应用磁贴: 实际上windows的磁贴就是用xml实现的,你只需要创建相应格式的xml就可以实现动态磁贴了 一,手动更新磁贴 二,轮询更 ...

  8. openresty开发系列24--openresty中lua的引入及使用

    openresty开发系列24--openresty中lua的引入及使用 openresty 引入 lua 一)openresty中nginx引入lua方式 1)xxx_by_lua   ---> ...

  9. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

随机推荐

  1. 1.2.1 OC概述

    本文并非最终版本,如想关注更新或更正的内容,详见文末的联系方式,如有疏忽和遗漏,欢迎指正. 本文相关目录:(链接为简书链接) ====================== 所属文集:1.2 Objec ...

  2. 【转】apache 二级域名设置完整步骤

    原文链接:http://blog.sina.com.cn/s/blog_5375d76b01014fnt.html 最近在折腾网站二级域名的事情,在网上查了很多零碎的文档,不完整,有些也没有自己验证, ...

  3. javascript中三种典型情况下this的含义

    this本意:基于函数的执行环境绑定. 1)一般函数内部,返回的是window(作用域链中的第二层全局作用域) function test() { return this; } alert(test( ...

  4. 谷歌浏览器如何查看或获取Cookie字符串

    注:此博客仅供非web开发人员查看,以下内容都基于谷歌浏览器. 在网页空白处点击鼠标右键,在弹出菜单中选择[审查元素],可以看到网页下方出现审查元素相关界面. 在审查元素相关界面,点击[Network ...

  5. AMD与CMD(转载)

    JavaSript模块化   在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发?       模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题 ...

  6. view的滑动冲突解决方案

    一.常见的滑动冲突场景 1.外部滑动方向和内部滑动方向不一致 2.外部滑动方向和内部滑动方向一致 3.上面两种情况的嵌套 二.滑动冲突处理的原则 场景1的处理原则是:当用户左右滑动时,需要让外部的vi ...

  7. Linux Shell 通配符、元字符、转义符【转帖】

    作者:程默 说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: 1   1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt  ...

  8. .net 4.0 ValidateRequest="false" 无效

    昨天安装了VisualStudio 2010 Ultimate,今天把最近的一个项目升级到了4.0下,结果跑了一下,发现关于页面启用 ValidateRequest="false" ...

  9. Web前端开发推荐阅读书籍

    前言 前端工程师在中国兴起也就5年左右,以前公司里没有专门前端工程师的这个职位,很多前端方面的任务都是由全栈工程师来完成,有的基础一点的后台或者设计的帮助分担一些.但是随着互联网的快速发展,特别是所谓 ...

  10. nginx-(/etc/init.d/nginx)启动脚本

    #!/bin/bash #nx Startup script for the Nginx HTTP Server # it is v. version. # chkconfig: - # descri ...