У меня есть Companies
, который я пытаюсь отфильтровать, используя criteria
. Каждый Company
имеет CurrentStatus
, и метод фильтрации вызывается каждый раз, когда пользователь проверяет CheckBox
для определения фильтра. В настоящее время я работаю почти так, как хочу, кроме одного. Это то, что у меня есть;Добавление нескольких критериев в список предикатов
private void FilterCompanyType(object sender, RoutedEventArgs e)
{
criteria.Clear();
if (currentCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<CompanyModel>(x => x.CurrentStatus == 1));
}
if (nonCurrentCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<CompanyModel>(x => x.CurrentStatus == 0));
}
foreach (CheckBox checkBox in companyFilters.Children)
{
if (!CheckCheckBoxes())
{
dataGrid.ItemsSource = null;
compDetailsLabel.Content = string.Empty;
}
else
{
dataGrid.ItemsSource = CompanyICollectionView;
CompanyICollectionView.Filter = dynamic_Filter;
SetSelectedCompany(selectedIndex);
dataGrid.SelectedIndex = 0;
}
}
}
Как я сказал, что это работает нормально, это работает, когда пользователь хочет увидеть список Companies
где CurrentStaus == 1
ИЛИ список Companies
где CurrentStatus == 0
. Однако в настоящее время пользователь не может видеть список Companies
, если указаны оба CheckBoxes
, где CurrentStatus == 0
AND CurrentStatus == 1
.
Я попытался добавить это, но он не работает как с CheckBoxes
checked;
if (nonCurrentCheckBox.IsChecked == true && currentCheckBox.IsChecked == true)
{
criteria.Add(new Predicate<CompanyModel>(x => x.CurrentStatus == 0));
criteria.Add(new Predicate<CompanyModel>(x => x.CurrentStatus == 1));
}
Это просто возвращает пустой DataGrid
. Как я могу изменить Predicate
, чтобы разрешить оба?
Вы можете попробовать 'criteria.Add (новый предиката (х => (x.CurrentStatus == 1 || x.CurrentStatus == 0)))' для обоих проверяется. –
bars222
@ bars222, к сожалению, использование этого результата по-прежнему не приводит к тому, что в 'DataGrid' не отображаются' Компании' – CBreeze
Также вы должны добавить код в предыдущие инструкции 'if'. if (currentCheckBox.IsChecked == true && nonCurrentCheckBox.IsChecked == false) – bars222