Стандартный ComboBox в WPF умеет фильтровать содержимое по принципу .StartsWith(string), чего иногда бывает недостаточно. Ниже представлен ComboBox с фильтрацией по всему содержимому. Выкладываю чтоб постоянно не вспоминать где же я его использовал. Если кому еще пригодится - буду рад.
Как использовать:
<controls:FilteredComboBox FilterPath="Name"
FilterText="{Binding RelativeSource={RelativeSource Self}, Path=Text, Mode=OneWay}"
ItemsSource="{Binding Cities, Mode=OneWay}"
SelectedItem="{Binding SelectedCity, Mode=TwoWay}" />
где
FilterPath - поле элемента, к которому будет применён фильтр
FilterText - значение фильтра (в примере выше это текст, вводимый в сам комбобокс), можно прибиндить к какому-либо TextBox'у или свойству модели
ItemsSource и SelectedItem - стандартные свойства коллекции элементов и текущего выбранного элемента соответственно