Есть listview
. Он забайдин с ObservableCollection<MyObject>
. Возможно ли организовать поиск "на лету" по коллекции с выделением найденного? Т.е. есть TextBox
с триггером EventName="TextChanged"
и при вводе туда символов, в listview
отображать подходящие записи. Нашел такой вариант, но мне нужен MVVM.
Задача решается легко, кроме Binding
ничего не требуется.
Разметка:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBox Text="{Binding Pattern, UpdateSourceTrigger=PropertyChanged}"
Margin="5,5,5,0" Padding="3"/>
<ListBox Grid.Row="1" Margin="5"
ItemsSource="{Binding Strings}"
SelectedItem="{Binding Selected}"/>
</Grid>
ViewModel:
class MainVM : INotifyPropertyChanged
{
string _pattern;
public string Pattern
{
get => _pattern;
set
{
Set(ref _pattern, value);
Selected = Strings.FirstOrDefault(s => s.StartsWith(Pattern));
}
}
string _selected;
public string Selected
{
get => _selected;
set => Set(ref _selected, value);
}
public ObservableCollection<string> Strings { get; }
public MainVM()
{
Strings = new ObservableCollection<string>
{
"Телевизор",
"Телефон",
"Кровать",
"Чемодан",
"Стол",
"Шкаф",
"Чайник"
};
}
protected void Set<T>(ref T field, T value, [CallerMemberName] string propertyName = "")
{
field = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
Добавим скролл до выделенного Item.
Подпишемся на событие в разметке:
<ListBox Grid.Row="1" Margin="5"
ItemsSource="{Binding Strings}"
SelectedItem="{Binding Selected}"
SelectionChanged="OnSelectionChanged"/>
Обработчик события в MainWindow.xaml.cs
:
private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var listBox = sender as ListBox;
listBox.ScrollIntoView(listBox.SelectedItem);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как обрабатывать ботом сообщения, которые будут приходить, только тогдда, когда я запущу программу? Сейчас у меня так как на скрине, и когда...
Привет всемКак можно измерить ширину\высоту Document-а RichTextBox-a если в нем разные размеры шрифта