#c# #wpf #c#-4.0 #combobox
#c# #wpf #c #-4.0 #поле со списком
Вопрос:
Как ускорить скорость заполнения поля со списком? Академически говоря, представьте, что поле combox содержит 1 миллиард записей, которые необходимо представить. Как бы нам максимизировать скорость работы программы. Какие другие методы я мог бы использовать вместо поля со списком для отображения данных?
Вот подробности по моему конкретному вопросу:
я использую обработчик событий WPF
<ComboBox Height="24" SelectedIndex="0" HorizontalAlignment="Left"
Margin="146,27,0,0" Name="emoployeeUserNameComboBox" VerticalAlignment="Top"
Width="198" Loaded="emoployeeUserNameComboBox_Loaded"/>
private void emoployeeUserNameComboBox_Loaded(object sender, RoutedEventArgs e) {
using (ToolboxDataContext dbToolbox = new ToolboxDataContext()) {
var query = (from x in dbToolbox.DropDownEmployeesUserNames()
select x.UserName).ToList();
this.emoployeeUserNameComboBox.ItemsSource = query;
}
Описанная выше хранимая процедура DropDownEmployeesUserNames
определяется как
SELECT [UserName],Emp_Number
FROM AdminUser
ORDER BY UserName
Возвращает 14 257 строк
Комментарии:
1. Серьезно, 14000 строк в поле со списком?
2. Такое поле со списком будет полностью непригодно для использования, независимо от того, насколько оно быстрое.
3. Было бы лучше реализовать свой собственный поле со списком, используя панель виртуализации?
4. Мне интересно об этом. Например: если я создам поле со списком на основе пользовательских данных. Если пользователь нажимает «T», заполните поле со списком всеми T значениями. Если они нажимают «Ta», заполняют только первые две буквы Ta
Ответ №1:
Поля со списком предназначены для того, чтобы содержать ограниченный набор опций. Если вы хотите разрешить кому-либо выбирать из 1 миллиарда вариантов, вам лучше использовать автозаполнение в сочетании с кнопкой, которая вызывает всплывающее окно, позволяющее осуществлять эффективный поиск данных, необходимых для выбора элемента. Я обычно создаю всплывающее окно со следующими функциями:
- Механизм фильтрации
- Альфа-ограничитель
- Подкачка
- Недавно выбранные / популярные значения, когда, как правило, наблюдается некоторая согласованность в том, как пользователь выбирает значения
Комментарии:
1. Я хотел бы, чтобы пользователь мог видеть возможных пользователей. Вместо того, чтобы пытаться вводить их.
2. Возможно, мне следует создать текстовое поле, которое управляет результатами datagrid. Затем пользователь может выбрать сотрудника.