Если вы используете MVVM подход вы можете сделать следующее:
- Bind поискового элемента Textbox Текст, ItemsSource ListView и SelectedItem к ViewModel
- Набор 'UpdateSourceTrigger = PropertyChanged' на TextBox-х binding
- В установщике свойства, которое TextBox привязывает для добавления логики, которая ищет коллекцию ItemsSource и устанавливает свойство bounded SelectedItem.
Что-то вроде этого:
XAML:
<TextBox Text="{Binding Path=SearchTerm, UpdateSourceTrigger=PropertyChanged}"/>
<ListView ItemsSource="{Binding Path=SourceCollection}" SelectedItem="{Binding Path=SelectedSearchItem, Mode=TwoWay}" />
Код:
public class ViewModel : INotifyPropertyChanged
{
public string SearchTerm
{
get { return searchTerm; }
set {
searchTerm = value;
SelectedSearchItem = SourceCollection.FirstOrDefault(foo => foo.Name.Contains(searchTerm));
}
}
public Foo SelectedSearchItem
{
get { return selecedSearchItem; }
set {
selectedSearchItem = value;
// Raise PropertyChanged
}
}
public ObservableCollection<Foo> SourceCollection { get; set;}
}