原文:快速构建Windows 8风格应用16-SettingContract原理及构建

本篇博文主要介绍Setting Contract概述、Setting Contract实现基本原理、如何构建Setting Contract、构建Setting Contract最佳实践。

Setting Contract概述

1)  Setting Contract在当前的应用中提供了快速、上下文相关的沉浸式的设置访问体验;

2)  Setting Contract始终是可用的;

3)  设置包括始终可用的系统设置、让用户可以控制应用对系统设备和功能的访问的系统代理设置、以及当前应用程序指定的设置;

我们可以从屏幕右边缘轻扫划出超级按钮,选择“设置”显示设置窗口。设置窗口中既包括应用设置又包括系统设置。

对于开发者,可以通过SettingCommand提供设备面板中入口点,并且这些入口点显示在设置窗口的顶端,其中“权限”和“评论和打分”[注意:只有通过Windows应用商店审核后的应用程序才有该入口点]两个入口点由系统提供。设置面板底端包括由系统提供的电脑设置[音量、亮度、电源等信息]。

Setting Contract实现基本原理

1)  注册设置面板中CommandsRequested事件;

2)  在相关设置事件的回调函数中指定SettingsCommand命令;

3)  最后将SettingsCommand命令添加到ApplicationCommands中,使该命令在设置面板中生效;

如何构建Setting Contract

上面刚刚提到实现Setting Contract的基本原理,那我们如何在应用程序中实现Setting Contract呢?

第一步:

注册CommandsRequested事件。

第二步:

onCommadsReqested回调函数中添加SettingsCommand命令,其中SettingsCommand类中构造函数包含三个参数。

三个参数分别为settingsCommandId[设置命令的Id,该参数为object类型]、label[控制面板中入口点显示信息]、handler[触发该入口点时执行的操作,该参数类型为UICommandInvokedHandler]。

回调函数中:

我们声明SettingsCommand对象设置handler参数时,可以使用Lambda表达式方式处理该入口点击时触发的操作,也可以声明UICommandInvokedHandler对象进行设置handler参数。

其中UICommandInvokedHandler委托对象中需要传递一个类型为IUICommand的参数。

代码可如下:

注意:我们也可以在设置面板中某一入口点中点击处理代码中声明SettingsFlyout对象,并且在该对象中添加自定义控件,用于在控制面板中显示。

代码可如下:

我们可以设置SettingsFlyout对象的Content、HeaderBrush、HeaderText等属性,其中AboutUserControl为用户自定义控件。

我们可以通过右键选中应用程序解决方案=>添加=>添加新项,在弹出面板中找到用户控件并添加。

然后我们可以设置自定义控件的显示的样式和信息。代码可如下:

第三步:

SettingsCommand命令添加到ApplicationCommands中,使该入口点在设置面板中生效。

完成这三个步骤之后,我们可以运行自己应用程序看一下设置面板中有什么变化。运行效果:

我们可以看到自己添加的两个入口点已经显示在设置面板中了。点击某一入口点执行预先设置好的操作。

上图中显示的就是自定义控件中设置的内容。

构建Setting Contract最佳实践

1)  在Setting Contract中设置应用的相关特性;

2)  Setting Contract中不要包含任务流程;

3)  添加的设置项不要超过四项;

4)  将很少使用的设置项进行整合;

5)  为常用的设置项提供入口;

6)  设置的层级不要超过两极;

7)  当用户改变了设置后,应用将立即作出反映;

8)  为同种类型的设置提供相同的设置体验;

9)  每个设置项应有一个简洁易懂的说明;

10)不要使用设置导航到应用的其他部分;

11)设置面板中推荐使用的控件有:ToggleSwitch、Button、HyperlinkButton、TextBox、RadioButton和CheckBox;

更多关于Setting Contract使用建议可参考:应用设置指南(Metro风格应用)

Setting Contract示例下载地址

快速构建Windows 8风格应用16-SettingContract原理及构建的更多相关文章

  1. 快速构建Windows 8风格应用36-商店应用发布流程

    原文:快速构建Windows 8风格应用36-商店应用发布流程 引言 在发布应用之前,我们需要注册开发者账号才能够发布应用.我们可以登录https://appdev.microsoft.com/Sto ...

  2. 快速构建Windows 8风格应用32-构建辅助磁贴

    原文:快速构建Windows 8风格应用32-构建辅助磁贴 引言 Windows Phone中,我们开发者可能会开发的一个功能点是将数据列表中某一项"Pin To Start(固定到开始屏幕 ...

  3. 快速构建Windows 8风格应用17-布局控件

    原文:快速构建Windows 8风格应用17-布局控件 本篇博文主要介绍三种常用的布局控件:Canvas.Grid.StackPanel. Panel类是开发Windows 8 Store应用中一个重 ...

  4. 快速构建Windows 8风格应用15-ShareContract构建

    原文:快速构建Windows 8风格应用15-ShareContract构建 本篇博文主要介绍共享数据包.如何构建共享源.如何构建共享目标.DataTransferManager类. 共享数据包 Da ...

  5. 快速构建Windows 8风格应用14-ShareContract概述及原理

    原文:快速构建Windows 8风格应用14-ShareContract概述及原理 本篇博文主要介绍Share Contract概述.Share Contract实现原理.实现Share Contra ...

  6. 快速构建Windows 8风格应用13-SearchContract构建

    原文:快速构建Windows 8风格应用13-SearchContract构建 本篇博文主要介绍如何在应用中构建SearchContract,相应的原理已经在博文<快速构建Windows 8风格 ...

  7. 快速构建Windows 8风格应用9-竖直视图

    原文:快速构建Windows 8风格应用9-竖直视图 本篇博文主要介绍竖直视图概览.关于竖直视图设计.如何构建竖直视图 竖直视图概览 Windows 8为了支持旋转的设备提供了竖屏视图,我们开发的应用 ...

  8. 快速构建Windows 8风格应用10-设备方向

    原文:快速构建Windows 8风格应用10-设备方向 本篇博文主要介绍常用支持Windows 8操作系统设备的方向.如何获取当前设备方向.DisplayProperties类. 常用支持Window ...

  9. 快速构建Windows 8风格应用11-语义缩放

    原文:快速构建Windows 8风格应用11-语义缩放 本篇博文主要介绍为什么需要语义缩放.什么是语义缩放.如何构建语义缩放. 为什么需要语义缩放 如果用过Windows 8系统的开发者都知道在Win ...

  10. 快速构建Windows 8风格应用12-SearchContract概述及原理

    原文:快速构建Windows 8风格应用12-SearchContract概述及原理 本篇博文主要介绍Search Contract概述.Search Contract面板结构剖析.Search Co ...

随机推荐

  1. MyEclipse调整项目的顺序

    MyEclipse该项目是按照字母顺序排列的项目名称,无法调整. 例,我现在做Photo工程项目,向下位置,非常不方便: 可是,它有一个将项目分组的功能"Working Sets" ...

  2. 微软MVP社区夏日巡讲诚邀您的参与: 北京,上海,西宁,成都,西安

  3. [SignalR]异常信息捕获以及处理

    原文:[SignalR]异常信息捕获以及处理 异常处理,一般采用try..catch方式处理,而signalR里面有HubPipelineModule类可以捕获到Hub内发生的异常信息. 从上图中,可 ...

  4. Android新浪微博client(七)——ListView图片异步加载、高速缓存

    原文出自:方杰|p=193" style="color:rgb(202,0,0); text-decoration:none; font-size:14px; font-famil ...

  5. 1第一个Android应用程序

    第一个程序从 Hello World 開始?? 或许C语言学习是从这開始的,可是书上不是这么開始的,或许起点就决定了高度?? 一.新建安卓项目 (1)选择安卓项目 (2)随便建个名字的项目,默认下一步 ...

  6. 从源码看Android中sqlite是怎么读DB的(转)

    执行query 执行SQLiteDatabase类中query系列函数时,只会构造查询信息,不会执行查询. (query的源码追踪路径) 执行move(里面的fillwindow是真正打开文件句柄并分 ...

  7. Nlog 配置总结

    Writes log messages to one or more files. Since NLog 4.3 the ${basedir} isn't needed anymore for rel ...

  8. 如何使用 RMAN 异构恢复一些表空间

    在oracle 在日常维护的数据库中难免会遇到误删数据和使用(drop.delete. truncate)当我们使用常规手段(flashback query .flashback drop)当数据不能 ...

  9. 采纳ajax提交POST样本数据

    问题叙述性说明 我们会form该input和checkbox提交给异步数据phpserver.处理后的回. 提交之后显示的位置: 难点分析 採用from表单的onsubmit属性阻止表单的提交 < ...

  10. [POJ 3311]Hie with the Pie——谈论TSP难题DP解决方法

    主题连接:  id=3311">http://poj.org/problem?id=3311 题目大意:有n+1个点,给出点0~n的每两个点之间的距离,求这个图上TSP问题的最小解 ...