快速构建Windows 8风格应用13-SearchContract构建
本篇博文主要介紹如何在應用中構建SearchContract,相應的原理已經在博文《快速構建Windows 8風格應用12-SearchContract概述及原理》中闡述清楚。
如何在應用中構建SearchContract
這里以常見的構建Search Contract功能為例,具體如下:
設置應用Search權限:
我們在應用中構建SearchContract之前,需要確認應用程序具有相應的Search能力,可以在應用清單文件中查看設置。?
添加標準Search Contract頁面:
應用的解決方案中添加Search Contract頁面。
查看Search Contract頁面默認生成的控件模版:
添加SearchResultPage.xaml頁面后,自動會構建出用于頁面顯示搜索信息的控件模版。例如:
相應XAML設計器顯示樣式:
Search Contract頁面對應cs文件LoadState方法中添加進行搜索數據代碼:
SearchResultPage.xaml.cs文件的LoadState方法中根據搜索文本在應用數據中進行搜索,并添加到數據集合中。代碼可如下所示:
更改Search Contract頁面需要綁定的數據模版:
更改解決方案中Common文件夾下StandardStyles.xaml文件的StandardSmallIcon300x70ItemTemplate數據模版,設置該數據模版中我們要顯示的字段控件。例如:
運行應用查看搜索效果:
?
到這里我們就可以利用Search Contract進行搜索信息了,并在添加的Search Contract頁面顯示搜索出來的結果。效果如圖:
以上演示的是在應用程序運行的狀態時進行搜索,其實應用程序在關閉狀態下可以通過Search Contract啟動并進行搜索。
應用程序外部啟動:
在App.xaml.cs文件中,需要重寫OnSearchActivated方法來接收系統發送的搜索激活事件。OnSearchActivated方法在兩種情況下進行觸發:Search Contract面板中點擊Search按鈕和點擊列表中某一應用時。
OnSearchActivated方法中編寫應用程序在外部啟動時進行搜索的代碼。代碼如下:
代碼中首先判斷當前應用程序狀態是否為“NotRunning”、“ClosedByUser”、“Terminated”,若為這三種狀態之一,先加載數據、注冊SuggestionRequested(搜索建議)事件、最后激活SearchResultPage頁面。
注意:可以通過設置SearchPane類GetForCurrentView()方法的PlaceholderText屬性值,實現在Search Contract面板輸入框中自定義提示文字,可以告訴用戶可以輸入什么進行搜索,當輸入文字后提示文字就會自動消失。代碼可如下;
實現效果:
異步搜索建議:
上篇博文提到為了提高用戶體驗,開發者應該必須在用戶輸入搜索信息時提供搜索建議。那么在應用中如何實現搜索建議呢?
注冊Search Contract面板的搜索建議事件:
OnSuggestionsRequested方法中進行匹配相關的搜索建議。
代碼中AppendQuerySuggestion()方法實現提供搜索建議。
注意:通過AppendQuerySuggestion()可以將一個數組信息全部添加到搜索建議中,但是目前搜索面板中最多顯示5條搜索建議,這一點需要開發者在開發過程中注意到。
實現效果如圖:
我們也可以通過AppendSearchSeparator()方法實現在搜索建議中提供必要的分欄。代碼如下:
實現效果:
另外Search Contract中還提供了一種搜索推薦的形式,通過這個搜索推薦方便用戶直接跳轉到相應信息的詳細頁面。
實現搜索推薦需要借助SearchSuggestionCollection類的AppendResultSuggestion(string text, string detailText, string tag, IRandomAccessStreamReference image, string imageAlternateText)方法來實現。代碼可如下:
代碼中AppendResultSuggestion()方法中參數分別為:
實現效果:
AppendQuerySuggestion()方法和AppendResultSuggestion()方法主要區別:
本地搜索建議:
設置SearchPane的LocalContentSuggestionSettings,并取消OnSuggestionsRequested事件監聽,可以提供本地文件的搜索建議。其中LocalContentSuggestionSettings類包含了搜索范圍,路徑和文件格式。代碼可如下:
LocalContentSuggestionSettings類方法和屬性可參考MSDN:LocalContentSuggestionSettings class。
注意:要搜索到本地文件,需要在清單文件中開啟對數據的讀取權限。例如:
設置搜索歷史:
長期使用我們應用之后會造成系統歷史記錄會變得非常冗長,可以通過以下代碼關閉歷史記錄:
同時關于搜索歷史還有一個屬性:SearchHistoryContext。
首先我們需要知道一個應用中可以包含多套搜索歷史記錄,通過SearchHistoryContext屬性可以確實使用哪一套歷史記錄。
轉載于:https://www.cnblogs.com/wzk89/archive/2012/09/26/2704049.html
總結
以上是生活随笔為你收集整理的快速构建Windows 8风格应用13-SearchContract构建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AngularJs学习笔记--E2E T
- 下一篇: 299贷款通道是真的吗