博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速构建Windows 8风格应用16-SettingContract原理及构建
阅读量:4305 次
发布时间:2019-06-06

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

原文:

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

Setting Contract概述

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

2)  Setting Contract始终是可用的;

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

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

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

 

Setting Contract实现基本原理

 

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

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

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

 

如何构建Setting Contract

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

第一步:

注册CommandsRequested事件。

 

第二步:

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

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

回调函数中:

 

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

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

代码可如下:

 

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

代码可如下:

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

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

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

 

第三步:

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

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

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

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

 

构建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使用建议可参考:。

posted on
2014-09-23 14:29 阅读(
...) 评论(
...)

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

你可能感兴趣的文章
Java中equals和==的区别
查看>>
JVM内存管理及GC机制
查看>>
Java:按值传递还是按引用传递详细解说
查看>>
Java中Synchronized的用法
查看>>
阻塞队列
查看>>
linux的基础知识
查看>>
接口技术原理
查看>>
五大串口的基本原理
查看>>
PCB设计技巧与注意事项
查看>>
linux进程之间通讯常用信号
查看>>
main函数带参数
查看>>
PCB布线技巧
查看>>
关于PCB设计中过孔能否打在焊盘上的两种观点
查看>>
PCB反推理念
查看>>
京东技术架构(一)构建亿级前端读服务
查看>>
php 解决json_encode中文UNICODE转码问题
查看>>
LNMP 安装 thinkcmf提示404not found
查看>>
PHP empty、isset、innull的区别
查看>>
apache+nginx 实现动静分离
查看>>
通过Navicat远程连接MySQL配置
查看>>