private void UpdateSearch() { SearchViewItems.Clear(); var keyword = SearchBox.Text.ToLower(); if (keyword.Length <= 0) { SearchViewItems.AddRange(SubViewItems); } else { SearchViewItems.AddRange(SubViewItems.Where(item => item.ID.ToLower().Contains(keyword) || item.Key.ToLower().Contains(keyword) || item.Mod.Source.GetString().ToLower().Contains(keyword) || item.Mod.Key.ToLower().Contains(keyword) || item.Mod.ModState.GetString().ToLower().Contains(keyword) || item.Mod.Mod.Title.Contains(keyword) || item.Mod.Mod.Author.ToLower().Contains(keyword) || item.Mod.Mod.Description.ToLower().Contains(keyword) )); } Sort(); }
private void RefreshSubComboListItem(ComboItem selected) { SubViewItems.Clear(); Func <ViewItem, bool> predict = (item) => true; if (!selected.IsAll) { var category = (SubComboBox.SelectedItem as ComboItem)?.Value as L4D2Type.Category; if (selected.IsUncategorized) { predict = item => { var main = (MainComboBox.SelectedItem as ComboItem)?.Value as L4D2Type.Category; Logging.Assert(main != null); var all = main.Children; var have = item.Mod.Mod.Category; return(have.Union(all).Count() == 0); } } ; else if (selected.IsIgnoreList) { predict = item => item.Mod.IsIgnoreCollision; } else if (selected.IsConflicted) { predict = item => item.Mod.IsHaveCollision; } else { predict = item => item.Mod.Mod.Category.Contains(category); } } SubViewItems.AddRange(MainViewItems.Where(predict)); UpdateSearch(); }