Живой поиск System.Windows.Controls.ComboBox C# WPF
#c_sharp #wpf #combobox #фильтр
Добрый день/вечер, столкнулся с задачей сделать контекстный поиск в Windows.Controls.ComboBox.
Поиск производится по любому вхождению.
Например имеем: Вася, Федя, Вика
Набираем "в", получаем: Вася, Вика; "ва" остается Вася; "дя" - Федя.
Надеюсь смысл понятен.
Доработал класс ComboBox:
using System.Collections.Generic;
using System.Linq;
using System.Windows.Controls;
using ProgrammingWeapons;
namespace Telemetria.UI
{
public class ComboBoxFinder : ComboBox
{
private bool _isAutoFilter = true;
public bool IsAutoFilter {
get { return _isAutoFilter; }
set { _isAutoFilter = value; }
}
private readonly List
Ответы
Ответ 1
У меня работает так:
XAML:
Code-behind:
void OnComboboxTextChanged(object sender, RoutedEventArgs e)
{
CB.IsDropDownOpen = true;
// убрать selection, если dropdown только открылся
var tb = (TextBox)e.OriginalSource;
tb.Select(tb.SelectionStart + tb.SelectionLength, 0);
CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(CB.ItemsSource);
cv.Filter = s =>
((string)s).IndexOf(CB.Text, StringComparison.CurrentCultureIgnoreCase) >= 0;
}
Результат:
Комментариев нет:
Отправить комментарий