首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Windows 8 風格應用開發入門:搜尋合約完整實作教學

     編輯:關於.NET

本文示範從專案範本添加搜尋合約頁面、資料繫結、搜尋建議/推薦、外部啟動處理、本地搜尋與歷史管理的完整實作流程。

啟用搜尋權限與添加頁面

  1. 清單檔「功能」啟用相關檔案存取權限
  2. 方案總管右鍵 → 「加入」→「新增項目」→「搜尋合約」
  3. 自動產生 SearchResultsPage.xaml 與對應程式碼

清單檔搜尋權限 添加搜尋合約頁面

預設搜尋結果頁面樣板

產生的頁面包含查詢文字顯示、結果計數、GridView 結果列表等控件。

搜尋結果頁面控件樣板 XAML 設計器預覽

LoadState 方法實作搜尋邏輯

protected override void LoadState(Object navigationParameter, 
    Dictionary<String, Object> pageState) {
    var queryText = navigationParameter as String;
    var results = SearchData(queryText); // 應用資料搜尋邏輯
    DefaultViewModel["Results"] = results;
    DefaultViewModel["QueryText"] = queryText;
}

LoadState 實作程式碼

自訂結果項目樣板

修改 Common/StandardStyles.xaml 中的 StandardSmallIcon300x70ItemTemplate。

自訂資料樣板

執行效果驗證

搜尋結果執行效果

應用外部啟動搜尋處理

在 App.xaml.cs 重寫 OnSearchActivated:

protected override void OnSearchActivated(SearchActivatedEventArgs args) {
    if (args.PreviousExecutionState == ApplicationExecutionState.NotRunning ||
        args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser ||
        args.PreviousExecutionState == ApplicationExecutionState.Terminated) {
        // 載入資料、註冊建議事件
        LoadData();
        SearchPane.GetForCurrentView().SuggestionsRequested += OnSuggestionsRequested;
    }
    // 導航至搜尋結果頁
    var rootFrame = new Frame();
    rootFrame.Navigate(typeof(SearchResultsPage), args.QueryText);
    Window.Current.Content = rootFrame;
    Window.Current.Activate();
}

OnSearchActivated 實作

自訂搜尋框預留文字

SearchPane.GetForCurrentView().PlaceholderText = "搜尋產品、分類...";

PlaceholderText 設定 預留文字效果

搜尋建議實作

private void OnSuggestionsRequested(SearchPane sender, 
    SearchPaneSuggestionsRequestedEventArgs args) {
    var deferral = args.Request.GetDeferral();
    var suggestions = GetSuggestions(args.QueryText); // 非同步取得建議
    foreach (var s in suggestions) {
        args.Request.SearchSuggestionCollection.AppendQuerySuggestion(s);
    }
    deferral.Complete();
}

註冊建議事件 AppendQuerySuggestion 實作 搜尋建議效果

搜尋分隔與推薦

// 添加分隔線
args.Request.SearchSuggestionCollection.AppendSearchSeparator("分類");

// 搜尋推薦:帶縮圖、詳細資訊,點擊直接跳轉
args.Request.SearchSuggestionCollection.AppendResultSuggestion(
    "產品名稱", "詳細描述", "productId", 
    RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/thumb.jpg")),
    "替代文字");

AppendSearchSeparator 實作 分隔線效果 AppendResultSuggestion 實作 搜尋推薦效果

建議與推薦差異比較

特性搜尋建議搜尋推薦
目的查詢修正引導精準結果直達
內容純文字圖片+標題+描述
點擊行為重新搜尋直接導航詳細頁
最大顯示5 條視空間而定

本地檔案搜尋建議

var settings = new LocalContentSuggestionSettings();
settings.AqsFilter = "kind:picture"; // 圖片類型
settings.Locations.Add(KnownFolders.PicturesLibrary);
SearchPane.GetForCurrentView().SetLocalContentSuggestionSettings(settings);
// 需清單檔啟用圖片庫權限

本地搜尋建議設定 清單檔權限設定

搜尋歷史管理

// 關閉搜尋歷史
SearchPane.GetForCurrentView().ShowOnKeyboardInput = false;

// 搜尋歷史上下文:區分不同搜尋場景
SearchPane.GetForCurrentView().SearchHistoryContext = "productSearch";

關閉搜尋歷史

搜尋合約實作完成,應用已整合至系統級搜尋體驗。下一章將介紹分享合約架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved