SearchBox.SuggestionsRequested 事件

定義

發生于使用者的查詢文字變更,且應用程式需要提供新的建議,才能顯示在搜尋窗格中時。

// Register
event_token SuggestionsRequested(TypedEventHandler<SearchBox, SearchBoxSuggestionsRequestedEventArgs const&> const& handler) const;

// Revoke with event_token
void SuggestionsRequested(event_token const* cookie) const;

// Revoke with event_revoker
SearchBox::SuggestionsRequested_revoker SuggestionsRequested(auto_revoke_t, TypedEventHandler<SearchBox, SearchBoxSuggestionsRequestedEventArgs const&> const& handler) const;
public event TypedEventHandler<SearchBox,SearchBoxSuggestionsRequestedEventArgs> SuggestionsRequested;
function onSuggestionsRequested(eventArgs) { /* Your code */ }
searchBox.addEventListener("suggestionsrequested", onSuggestionsRequested);
searchBox.removeEventListener("suggestionsrequested", onSuggestionsRequested);
- or -
searchBox.onsuggestionsrequested = onSuggestionsRequested;
Public Custom Event SuggestionsRequested As TypedEventHandler(Of SearchBox, SearchBoxSuggestionsRequestedEventArgs) 
<SearchBox SuggestionsRequested="eventhandler"/>

事件類型

備註

您可以從數個來源取得建議:

  • 您可以自行定義它們。 例如,您可以建立汽車製造商的清單。
  • 如果您的應用程式搜尋本機檔案,您可以從 Windows 取得它們。
  • 您可以從 Web 服務或伺服器取得它們。

如需顯示建議的使用者體驗指導方針,請參閱 搜尋的指導方針和檢查清單

您可以使用 LocalContentSuggestionSettings ,在幾行程式碼中,根據 Windows 的本機檔案新增建議。 或者,您可以註冊搜尋方塊控制項的 SuggestionsRequested 事件,並建置您自己的建議清單,這些建議是由您從另一個來源擷取的建議所組成 (,例如本機定義清單或 Web 服務) 。

如需示範如何新增搜尋建議的程式碼範例,請下載 SearchBox 控制項範例。 此範例示範如何使用這三個可能的來源來新增搜尋建議,以及如何使用輸入法編輯器所產生的查詢文字替代形式來新增建議, (輸入法) 。 (如果您的應用程式將由日文或中文使用者使用,建議您使用查詢文字替代專案。)

搜尋建議的類型

您的應用程式可以顯示兩種類型的建議:可協助使用者精簡查詢的建議 (查詢建議) ,以及查詢實際結果的建議 (結果建議) 。 您可以選擇顯示或兩種類型的建議。

如果您提供查詢建議,且使用者選取一個查詢,則您的應用程式應該會在應用程式的搜尋結果頁面中顯示所選取、精簡查詢的結果來回應。

如果您提供結果建議,您也必須註冊 ResultSuggestionChosen 事件處理常式,以便在使用者選取其中一個結果建議時回應,而且您可以將結果顯示給使用者。

顯示應用程式提供的建議

取得建議之後,您會將其新增至 SearchSuggestionsRequest來顯示它們。SearchSuggestionCollection

如果您選擇同時顯示查詢建議和結果建議,您應該依建議類型將建議分組 (查詢或結果) ,並使用 AppendSearchSeparator分隔群組。 每個分隔符號都會取代建議,且後面至少必須接著一個建議,減少您可以顯示的建議數目。

建議中所有文字欄位的最大長度 (,例如文字、詳細資料文字和影像替代文字) 為 512 個字元。

若要深入瞭解如何使用建議為使用者建立良好的搜尋體驗,請參閱 搜尋的指導方針和檢查清單

以非同步方式處理 SuggestionsRequested 事件

如果您想要以非同步方式回應 SuggestionsRequested 事件,您必須先取得 SearchSuggestionsRequestDeferral 物件,才能編輯建議清單。 以下是 快速入門的範例:將搜尋新增至顯示方式的應用程式

public async static void SearchBox_SuggestionsRequested(
    SearchBox sender, 
    SearchBoxSuggestionsRequestedEventArgs args)
{

    // This object lets us edit the SearchSuggestionCollection asynchronously. 
    var deferral = args.Request.GetDeferral();

    try { 

        // Retrieve the system-supplied suggestions.
        var suggestions = args.Request.SearchSuggestionCollection;

        var groups = await SampleDataSource.GetGroupsAsync();
        foreach (var group in groups)
        {
            var matchingItems = group.Items.Where(
                item => item.Title.StartsWith(
                    args.QueryText, StringComparison.CurrentCultureIgnoreCase));

            foreach (var item in matchingItems)
            {
                suggestions.AppendQuerySuggestion(item.Title);
            }
        }

        foreach (string alternative in args.LinguisticDetails.QueryTextAlternatives)
        {
            if (alternative.StartsWith(
                args.QueryText, StringComparison.CurrentCultureIgnoreCase))
            {
                suggestions.AppendQuerySuggestion(alternative); 
            }
        }
    }
    finally {
        deferral.Complete();
    }

}

適用於

另請參閱