public async void SetSearchFilter(string searchString)
        {
            searchString = searchString.ToLower();
            ObservableCollection <GridItem> searchResultRemoveList = new ObservableCollection <GridItem>();
            const string pathToSourceCode = @"SourceCodeAsContent\";

            foreach (GridItem item in this.mainGridItems)
            {
                var fileText = await this.ReadFileTextAsync(pathToSourceCode + item.ControlType.Name + ".xaml");

                fileText = CodeShowPage.ExtractMinCode(fileText);
                fileText = fileText.ToLower();
                if (!fileText.Contains(searchString))
                {
                    fileText = await this.ReadFileTextAsync(pathToSourceCode + item.ControlType.Name + ".xaml.cs");

                    fileText = CodeShowPage.ExtractMinCode(fileText);;
                    fileText = CodeShowPage.ExtractMinCode(fileText);
                    fileText = fileText.ToLower();
                    if (!fileText.Contains(searchString))
                    {
                        searchResultRemoveList.Add(item);
                    }
                }
            }

            foreach (GridItem itemToBeRemoved in searchResultRemoveList)
            {
                this.DemoItems.Remove(itemToBeRemoved);
            }
        }
        public async Task <List <string> > GetSearchTerms()
        {
            string       searchableText   = null;
            const string pathToSourceCode = @"SourceCodeAsContent\";

            foreach (GridItem item in this.mainGridItems)
            {
                var fileText = await this.ReadFileTextAsync(pathToSourceCode + item.ControlType.Name + ".xaml");

                searchableText += CodeShowPage.ExtractMinCode(fileText);
                fileText        = await this.ReadFileTextAsync(pathToSourceCode + item.ControlType.Name + ".xaml.cs");

                searchableText += CodeShowPage.ExtractMinCode(fileText);
            }

            const string regularExpression = @"[^a-zA-Z]";

            searchableText = Regex.Replace(searchableText, regularExpression, " ");
            searchableText = Regex.Replace(searchableText, @"\s+", " ");
            //searchableText = searchableText.ToLower();

            string[] words = searchableText.Split(' ');

            // Now lets trim the set to just objects that we might care about.

            List <string> winRtObjectNames = new List <string>();
            Type          rootType         = typeof(TypeInfo);
            TypeInfo      rootTypeInfo     = typeof(TypeInfo).GetTypeInfo();
            Assembly      assembly         = rootType.GetTypeInfo().Assembly;

            foreach (TypeInfo type in assembly.DefinedTypes)
            {
                winRtObjectNames.Add(type.Name);
            }

            rootType     = typeof(SyntaxHighlighter);
            rootTypeInfo = typeof(SyntaxHighlighter).GetTypeInfo();
            assembly     = rootType.GetTypeInfo().Assembly;
            foreach (TypeInfo type in assembly.DefinedTypes)
            {
                winRtObjectNames.Add(type.Name);
            }

            rootType     = typeof(Colors);
            rootTypeInfo = typeof(Colors).GetTypeInfo();
            assembly     = rootType.GetTypeInfo().Assembly;
            foreach (TypeInfo type in assembly.DefinedTypes)
            {
                winRtObjectNames.Add(type.Name);
            }

            rootType     = typeof(DependencyObject);
            rootTypeInfo = typeof(DependencyObject).GetTypeInfo();
            assembly     = rootType.GetTypeInfo().Assembly;
            foreach (TypeInfo type in assembly.DefinedTypes)
            {
                winRtObjectNames.Add(type.Name);
            }

            rootType     = typeof(DataRequestDeferral);
            rootTypeInfo = typeof(DependencyObject).GetTypeInfo();
            assembly     = rootType.GetTypeInfo().Assembly;
            foreach (TypeInfo type in assembly.DefinedTypes)
            {
                winRtObjectNames.Add(type.Name);
            }

            winRtObjectNames = winRtObjectNames.Distinct().ToList();
            IEnumerable <string> wordList   = new List <string>(words);
            IEnumerable <string> winrt      = winRtObjectNames as IEnumerable <string>;
            IEnumerable <string> objectList = winrt.Intersect(wordList);

            SyntaxHighlighter.ObjectNames = new List <string>(objectList);

            return(new List <string>(wordList));
        }