Поделиться через


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, если приложение выполняет поиск в локальных файлах.
  • Их можно получить с веб-службы или сервера.

Рекомендации по отображению предложений по взаимодействию с пользователем см. в разделе Рекомендации и контрольный список для поиска.

LocalContentSuggestionSettings можно использовать для добавления предложений на основе локальных файлов из Windows всего в нескольких строках кода. Кроме того, можно зарегистрироваться для события SuggestionsRequested элемента управления полем поиска и создать собственный список предложений, состоящий из предложений, полученных из другого источника (например, локально определенного списка или веб-службы).

Чтобы получить примеры кода, демонстрирующие добавление предложений поиска, скачайте пример элемента управления SearchBox. В примере показано, как добавить предложения поиска с помощью всех трех возможных источников, а также как добавить предложения для восточноазиатских языков с помощью альтернативных форм текста запроса, созданного редактором метода ввода (IME). (Мы рекомендуем использовать альтернативные варианты текста запроса, если ваше приложение будет использоваться японскими или китайскими пользователями.)

Типы предложений поиска

Существует два типа предложений, которые может отображать приложение: предложения, которые помогают пользователям уточнить запрос (предложения запросов), и предложения, которые являются фактическими результатами запроса (предложения результатов). Вы можете отобразить один или оба типа предложений.

Если вы предоставляете предложения запроса и пользователь выбирает один из них, ваше приложение должно ответить, отображая результаты выбранного уточненного запроса на странице результатов поиска вашего приложения.

Если вы предоставляете предложения результатов, необходимо также зарегистрировать обработчик событий 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();
    }

}

Применяется к

См. также раздел