Вот пользовательский элемент управления, с помощью которого вы можете фильтровать любые ItemsControls, инкапсулирующие любой тип коллекции любого типа объектов.Это лучше, чем держать ваш код в чистоте: он заполнен декальтрацией и совместим с «привязкой» XAML;)
http://dotnetexplorer.blog.com/2011/04/07/wpf-itemscontrol-generic-staticreal-time-filter-custom-control-presentation/
Вы можете найти пример кода с примером (больше постов, которыебудет углубляться в компонент)
Преимущество состоит в том, что вам не нужно заботиться о представлении управления коллекцией и, таким образом, вы будете увлекать свою модель с проблемами пользовательского интерфейса (поскольку вы должны признать правду: даже если это будет сделанос точки зрения модели, фильтрация коллекции (главным образом, пользовательский интерфейс), таким образом, лучше не использовать в виртуальной машине).По крайней мере, поместите эту логику в поведение;)
Вот единственное, что вам нужно, чтобы иметь рабочий фильтр в вашем списке / просмотре списка:
<SmartSearch:SmartSearchRoot x:Name="ss2" Margin=" 10,0,10,0" >
<SmartSearch:SmartSearchScope DataControl="{Binding ElementName=YOUR_LISTVIEW_NAME}" UnderlyingType="{x:Type YOUR_NAMESPACE:YOUR_OBJECT_TYPE}">
<!-- The list of property on which you want to apply filter -->
<SmartSearch:PropertyFilter FieldName="YOUR_PROPERTY_ONE" />
<SmartSearch:PropertyFilter FieldName="YOUR_PROPERTY_TWO" MonitorPropertyChanged=""true" />
</SmartSearch:SmartSearchScope>
</SmartSearch:SmartSearchRoot>