SearchBox.SuggestionsRequested 事件
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
發生于使用者的查詢文字變更,且應用程式需要提供新的建議,才能顯示在搜尋窗格中時。
// 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();
}
}