Есть ещё вариант использовать CollectionViewSource:
CollectionViewSource _viewSource = new CollectionViewSource();
_viewSource.Source = _items;
_viewSource.Filter += (s, e) =>
{
SomeItem item = e.Item as SomeItem;
bool accepted;
//проверяем наши условия. true - объект отобразится, false - не отобразится
e.Accepted = accepted;
};
Чтобы обновить список элементов используем:
_viewSource.View.Refresh();
После этого для каждого элемента из _items вызовется событие Filter.
Соответственно в ComboBox.ItemsSource биндим _viewSource.View. Таким образом в ComboBox не придется каждый раз вручную вставлять новую коллекцию.