2015-10-09 2 views
1

Я пытаюсь реализовать Searchbox с предложениями поиска. Каждый раз, когда я набираю более быстрый или длинный текст запроса, приложение рушится. Исключение не попадает в блок catch.Контроль управления Searchbox при вводе быстрых или длинных запросов в Windows 8.1. Приложение для магазина

private void SearchBoxEventsSuggestionsRequested(object sender, SearchBoxSuggestionsRequestedEventArgs e) 
{ 
    try { 
     var pList = GetPList(); 
     string queryText = e.QueryText; 
     if (!string.IsNullOrEmpty(queryText)) 
     {  
     Windows.ApplicationModel.Search.SearchSuggestionCollection suggestionCollection = e.Request.SearchSuggestionCollection; 
     foreach (var p in pList) 
     { 
      bool exists = p.desc.IndexOf(queryText, StringComparison.CurrentCultureIgnoreCase) > -1; 
           if (exists) 
           { 

            string result = p.desc + Environment.NewLine + p.name; 
            suggestionCollection.AppendQuerySuggestion(result); 
           } 
     } 
     }            
    } 
    catch (Exception ex){}     
} 

Метод GetPList не является асинхронным.

что я здесь не так?

+0

Прежде всего, почему ваша функция async? Тебе нечего ждать. – Dani

+0

это была ошибка. Не используется ключевое слово async. – TutuGeorge

ответ

0

Вы можете попробовать подход с задержкой. Подождите несколько секунд до нажатия любой другой клавиши. Когда пользователь перестанет печатать, вы можете выполнить поиск/фильтрацию.

Запустите таймер и выполните операцию в тике. Если есть еще одно нажатие клавиши немедленно. Сбросьте таймер, чтобы Tick дополнительно задерживался.

Смежные вопросы