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();
    }

}

适用于

另请参阅