다음을 통해 공유


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

}

적용 대상

추가 정보