If you are working with an ItemsControl (ListBox, ComboBox, ListView), and you want to filter several items using Outlook 2007 search style, this control is exactly for you.

Usage:
<local:Filter Header="Jewish Names"
Background="{DynamicResource DefaultHeaderBackgroundBrush}">
<ListBox ItemsSource="{Binding}"
Background="{DynamicResource DefaultBackgroundBrush}"
Foreground="{DynamicResource DefaultForegroundBrush}" />
</local:Filter>
The Filter custom control is a HeaderedContentControl which its content is limited to have an ItemsControl of any kind.
Once a well bind, ItemsControl content is placed, the filter uses the default-view of the content to filter its items, based on a default, customizable search predicate. To change the default search predicate, you can set the Filter.SearchStrategy property to any delegate matches to the SearchPredicate signature. Also you can set the search pattern, by setting the Filter.SearchPattern property explicitly.
How to use custom filter:
Having a collection of Person entity bind to the ItemsControl, you should set the Filter.SearchPredicate with an appropriate delegate (see Person.FirstNameSearchStrategy bellow) in order to filter by its FirstName or any other criteria.
public class Person
{
public string FirstName { get; set; }
public override string ToString()
{
return FirstName;
}
public static readonly Func<object, string, bool> FirstNameSearchStrategy = (element, pattern) =>
{
Person person = element as Person;
if (string.IsNullOrEmpty(pattern) ||
person != null &&
person.FirstName.StartsWith(pattern, true, null))
{
return true;
}
return false;
};
}
<local:Filter Header="Jewish Names"
Background="{DynamicResource DefaultHeaderBackgroundBrush}"
SearchStrategy="{x:Static local:Person.FirstNameSearchStrategy}">
<ListBox ItemsSource="{Binding}"
Background="{DynamicResource DefaultBackgroundBrush}"
Foreground="{DynamicResource DefaultForegroundBrush}" />
</local:Filter>
How to customize the filter theme:
Colors: Since the Filter control is a custom control, the dark theme in the screen shots above is not part of the control itself.
Style & Template: You can replace only the filter text box style, by creating your own text box style, and set the Filter.FilterBoxStyle property with your style. Or you can replace the whole control template. Make sure that the new template visual tree has a TextBox element inside, named PART_FilterBox, It's part of the control signature.
Licensing:
If you liked it, tell your friends by placing a nice comment, if you didn't, send a private message directly to me 
You can download the code from here.