Exemple #1
0
		private static async void GetSuggestions(SearchSuggestionsRequestDeferral deferral, SearchBox sender, SearchBoxSuggestionsRequestedEventArgs args)
		{
			try
			{
				var provider = GetProvider(sender);
				var query = args.QueryText;
				var suggestions = await Task.Run(() => provider.GetSuggestions(CancellationToken.None, query));
				var visitor = new AppendToSearchSuggestionCollectionVisitor(args.Request.SearchSuggestionCollection);
				foreach (var searchSuggestion in suggestions)
				{
					searchSuggestion.Accept(visitor);
				}
				deferral.Complete();
			}
			catch (Exception ex)
			{
				Debug.WriteLine(ex);
			}
		}
Exemple #2
0
        private static async void GetSuggestions(SearchSuggestionsRequestDeferral deferral, SearchBox sender, SearchBoxSuggestionsRequestedEventArgs args)
        {
            try
            {
                var provider    = GetProvider(sender);
                var query       = args.QueryText;
                var suggestions = await Task.Run(() => provider.GetSuggestions(CancellationToken.None, query));

                var visitor = new AppendToSearchSuggestionCollectionVisitor(args.Request.SearchSuggestionCollection);
                foreach (var searchSuggestion in suggestions)
                {
                    searchSuggestion.Accept(visitor);
                }
                deferral.Complete();
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }
Exemple #3
0
        private async void TextName_SuggestionsRequested(SearchBox sender, SearchBoxSuggestionsRequestedEventArgs args)
        {
            if (!string.IsNullOrEmpty(args.QueryText))
            {
                var characters = ViewModel.Characters.ToList();

                //var suggestions = Data.UnicodeData.Characters
                //    .Where(c => characters.Contains((char)c.CodePageInt))
                //    .SelectMany(c => c.AllNames)
                //    .Where(n => n.StartsWith(args.QueryText, StringComparison.CurrentCultureIgnoreCase))
                //    .ToList();

                // used cache list of filtered unicode character objects. This is too expensive to do everytime the user types in a character.
                List <Models.Character>          unicodeCharacters;
                SearchSuggestionsRequestDeferral deferral = null;

                if (!unicodeCharactersTask.IsCompleted)
                {
                    deferral          = args.Request.GetDeferral();
                    unicodeCharacters = await unicodeCharactersTask;
                }
                else
                {
                    unicodeCharacters = unicodeCharactersTask.Result;
                }

                var suggestions = unicodeCharacters
                                  .SelectMany(c => c.AllNames)
                                  .Where(n => n.StartsWith(args.QueryText, StringComparison.CurrentCultureIgnoreCase))
                                  .ToList();

                args.Request.SearchSuggestionCollection.AppendQuerySuggestions(suggestions);

                if (deferral != null)
                {
                    deferral.Complete();
                }
            }
        }