Я не уверен, что вы можете сделать это полностью в xaml, я думаю, что вам может понадобиться немного работы в другом месте. Вот как я это сделал для чего-то другого.
Оберните вашу коллекцию с помощью CollectionViewSource в вашем xaml (это делает коллекцию, которая имеет сортировку по определенному имени свойства):
<CollectionViewSource x:Key="ViewName" Source="{Binding YourBinding}">
<CollectionViewSource.SortDescriptions>
<comp:SortDescription PropertyName="Name" Direction="Ascending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
где-то еще, свяжите свой просмотр списка, чтобы этот источник был в качестве источника элементов:
<ListView x:Name="MyList" ItemsSource="{Binding Source={StaticResource ViewName}}" />
тогда где-то в коде, у меня есть мой слушатель изменения свойства текстового поля, но вы получите общее представление. Интерфейс ICollectionView имеет элемент фильтра, который вы можете использовать для фильтрации вещей.
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
var text = FilterTextBox.Text;
var source = MyList.Items as ICollectionView;
if (string.IsNullOrWhiteSpace(filter))
{
source.Filter = null;
}
else
{
source.Filter = delegate(object item)
{
var s = item as INamedItem;
return s.Name.IndexOf(filter, StringComparison.CurrentCultureIgnoreCase) != -1;
};
}
}