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

本篇博文主要介绍Search Contract概述、Search Contract面板结构剖析、Search Contract实现原理、Search Contract最佳实践。

Search Contract概述

使用过Windows 8操作系统的开发者都知道什么是Charms(超级按钮)。其中在Charms中包含了一个Search,微软称之为Search Contact,我们可以在应用中调用Search Contract相应的API来实现应用搜索功能。

使用Search Contract可以从系统的任何位置进入到我们的应用进行搜索,意思就是不管我们在操作系统上面做任何事情都可以随时使用Search Contract对第三方应用进行应用内搜索。

Search Contract可以在任意的场景中调出,当然也可以依赖与某一场景(例如:联系人页面只是搜索联系人,新闻页面只是搜索新闻)。我们只需要轻轻一划就可以启用。

Search Contract面板结构剖析

Search Contract面板可简单剖析如下:

1)  搜索的范围在于我们所选择的应用程序;

2)  搜索建议由我们所选择的应用程序提供,一般都是自动根据搜索条件在所选应用内搜索出来的结果,注意:搜索建议最多显示5条;

3)  列出已安装的实现了Search Contract的Windows 8风格应用;

4)  Search Contract面板显示所选应用的搜索推荐,一般最好提供包含缩略图和标题,提供精确的匹配信息,用户点击某一条搜索推荐后直接跳转到相应的详细信息页面。

Search Contract实现原理

首先我们来整体看一下搜索设置和相应的事件

1.我们想要在自己的应用中使用Search Contract,首先需要在应用程序的清单文件(Package.appxmanifest)中注册应用的搜索功能以及文件访问能力。

2.搜索面板中提供搜索历史(系统自动提供)默认是开启状态,应用本地内容的搜索建议以及设置占位符文本。

3.搜索面板中涉及到三个重要事件:搜索激活事件;查询提交事件;搜索建议请求事件。

搜索激活事件

1.用户选择一个搜索位置;

2.搜索面板中激活相应的应用进行搜索;

3.触发应用程序中搜索激活事件,判断是否包含查询文本,若未包含查询文本加载之前的应用状态,若包含查询文本进行搜索并显示搜索结果视图;

查询提交事件

1.用户输入查询内容点击搜索按钮,或者用户选择一个查询建议;

2.搜索面板中激活相应的应用进行搜索;

3.触发应用程序中搜索激活事件后,触发查询提交的事件,需要判断查询文本是否改变了,若查询文本未改变显示之前搜索结果视图,若查询文本发生改变重新进行查询显示搜索结果视图;

搜索建议请求事件

1.用户在搜索框中输入查询文本;

2.搜索面板中自动显示匹配的搜索历史记录,同时向相应的应用发起请求建议;

3.触发查询提交事件,是否进行异步的处理,若未进行异步处理将建议添加到搜索建议集合中,在搜索面板中显示来自应用的建议,若进行异步处理,首先请求延迟将建议添加到搜索建议集合中完成延迟处理,在搜索面板中显示来自应用的建议;

Search Contract最佳实践

1.不要在应用中添加搜索相关的控件;

2.不要在App Bar中放置搜索相关的UI;

3.始终提供搜索建议;

4.搜索建议应包含用户当前的搜索文本;

5.搜索建议应体现应用能够提供的结果;

6.用户选择搜索建议后,应立即跳转到相应的搜索结果页面;

7.如果想要给用户提供精准匹配,请提供搜索结果的建议;

快速构建Windows 8风格应用12-SearchContract概述及原理的更多相关文章

  1. 快速构建Windows 8风格应用23-App Bar概述及使用规范

    原文:快速构建Windows 8风格应用23-App Bar概述及使用规范 本篇博文主要介绍App Bar概述.App Bar命令组织步骤.App Bar最佳实践.   App Bar概述 Windo ...

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

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

  3. 快速构建Windows 8风格应用1-开发工具安装及模拟器使用

    原文:快速构建Windows 8风格应用1-开发工具安装及模拟器使用 本篇博文主要介绍的是开发Windows 8风格应用中常用的两个开发工具:Visual Studio 2012和Expression ...

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

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

  5. 快速构建Windows 8风格应用37-常见发布注意事项

    原文:快速构建Windows 8风格应用37-常见发布注意事项 引言 通常我们发布Windows Store应用失败后,会返回一些错误需要我们去修改.我之前在给学生做培训的时候发现大部分同学应用被打回 ...

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

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

  7. 快速构建Windows 8风格应用29-捕获图片与视频

    原文:快速构建Windows 8风格应用29-捕获图片与视频 引言 本篇博文主要介绍Windows 8中相机的概念.捕获图片与视频的基本原理.如何实现捕获图片与视频.相机最佳实践. 一.相机 关于相机 ...

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

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

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

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

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

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

随机推荐

  1. 【Java】实现一个根据日期判断星座程序的编写

    思路 直接根据月份做索引,然后根据日期边界判断是本月的星座还是上月的. 算法 private static String getAstro(int month, int day) { String[] ...

  2. 读改善c#代码157个建议:建议7~9

    目录: 建议7:将0值作为枚举的默认值 建议8:避免给枚举类型的元素提供显示的值 建议9:习惯运算符重载 一.建议7:将0值作为枚举的默认值 允许使用的枚举类型有:byte.sbyte.short.u ...

  3. codeforces Round #259(div2) E解决报告

    E. Little Pony and Summer Sun Celebration time limit per test 1 second memory limit per test 256 meg ...

  4. C#+Mapxtreme 实现一些GIS系统基本的功能

    此程序包括了mapxtreme地图相关基本功能的演示其中包括 鹰眼地图,图层控制,发达,缩小,平移地图,地图模糊查询,中点工具,距离测量工具,面积测量工具,图元信息查看工具.适合于企业级开发,可以为您 ...

  5. css整理 background-size优化

    font-size:12px; line-height:22px; font-family:Arial,Helvetica,sans-serif; /*优化*/ font:12px/22px Aria ...

  6. NGUI 3.5课程(五岁以下儿童)button-图片切换

    然后,我们去了一个样本,做一个button画面切换. 特征,像球员"开始"和"暂停". 写TestButton.cs脚本: using UnityEngine; ...

  7. C++学习笔记36 (模板的细节明确template specialization)和显式实例(template instantiation)

    C++有时模板很可能无法处理某些类型的. 例如: #include <iostream> using namespace std; class man{ private: string n ...

  8. ViewPager实现页面切换

    先贴效果图(每个开关Tab债券.尾随页变化.效果图蓝条添加的用户体验) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzIxMDYyMA==/fo ...

  9. 于XAML导入命名空间的代码

    例如,下面的代码到指定的命名空间.不仅导入的命名空间,并且还为指定的命名空间前缀local.当然,你也可以指定一个前缀为另一个名称,这可以定义.导入后,市民可以在命名当前空间XAML使用代码.例如,在 ...

  10. PC结束 Spark 二次开发 收到自己主动,并允许好友请求

    本次Spark二次开发是为了客服模块的开发, 能让用户一旦点击该客服则直接自己主动加入好友.而客服放则需自己主动加入好友,不同弹出对话框进行允许,这方便的广大客服. 如今废话不多说,直接上代码. pa ...