Фильтрация Collectionview по флажкам и тексту текстового поля
Я рассматриваю фильтрацию CollectionView, основанную, во-первых, на некотором тексте внутри текстового поля и, во-вторых, на том, установлены ли определенные флажки или нет. Чего я действительно хочу избежать, так это иметь сверхдлинный метод фильтрации, который говорит что-то вроде,
If CheckBox1 is checked { If CompanyContains SearchBox.Text && CompanyMeetsCheckBox1Spec } If CheckBox2 is checked { If CompanyContains SearchBox.Text && CompanyMeetsCheckBox2Spec }
и так далее, и так далее для любого количества флажков, которые я могу в конечном итоге получить. Возможно, у меня даже есть несколько флажков, так что это может закончиться;
If CheckBox1 is checked && CheckBox2 is checked { If CompanyContains SearchBox.Text && CompanyMeetsCheckBox1Spec && CompanyMeetsCheckBox2Spec }
Это действительно может затянуться надолго. Могу ли я попросить вас дать мне какое-нибудь предложение о том, как "аккуратно" избежать невероятно длинного метода фильтрации?.. Надеюсь, я правильно объяснил.
Что я уже пробовал:
Это метод, который я использую до сих пор для фильтрации на основе текста SearchBox;
private void SearchBoxCallApplyFilters(object sender, TextChangedEventArgs e) { CollectionViewSource.GetDefaultView(Companies).Refresh(); } private bool FilterCompanies(object obj) { Var company = obj as CompanyModel; if (searchBox.Text == string.Empty) { return true; } else if (company.Name.ToLower().Contains(CharactersOnly(searchBox.Text.ToLower()))) { return true; } return false; }
Ralf Meier
Для меня ваше требование совершенно непонятно-извините ...
Пожалуйста, объясните на примере, чего вы пытаетесь достичь.
Конечно, можно получить результаты с помощью цикла. Для этого необходимо, чтобы соответствующие элементы управления имели соответствующие имена. У вас он такой ?