private void btnSearch_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrWhiteSpace(tbSearch.Text)) { // Effectively reset the results when searching for nothing DataGridSource = Images; ClearDataGridSearch(); } else { List <string> searchTerms = tbSearch.Text.Split(',').ToList(); ImageCollection searchResults = new ImageCollection(); foreach (string term in searchTerms) { Regex pattern = new Regex(term.ToLower().Trim()); foreach (ImageModel model in Images) { bool matchWasFound = IsPatternMatch(pattern, model.Author.ToLower()) || IsPatternMatch(pattern, model.Title.ToLower()) || IsPatternMatch(pattern, model.Description.ToLower()) || IsPatternMatch(pattern, model.Keywords.ToLower()); bool unique = !searchResults.ContainsId(model.Id); if (matchWasFound && unique) { searchResults.Add(model); } } } DataGridSource = searchResults; dataGridImageCollection.ItemsSource = DataGridSource; dataGridImageCollection.Items.Refresh(); } }