Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Медленное выделение строк в DataGrid / 6 сообщений из 6, страница 1 из 1
12.06.2019, 15:07
    #39825758
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленное выделение строк в DataGrid
Приветствую, коллеги!

Столкнулся с весьма странным багом в DataGrid при выделении всех строк или относительно большого числа. Имеется DataGrid, например, с 200 строками и порядка 20 колонками. При нажатии Ctrl+A или выделении мышкой сразу всех подвисает на секунд 5. Рендеринг строк происходит быстро, но не выделение.

Как пробовал побороть. Убирал все конверторы. Задавал настройки Visualization в разных комбинациях. Событий на DataGrid нет. Проверил Bindings, но нигде нет чего-либо, что исполнялось бы при выделении.

Есть идеи, что может приводить к такому поведению DataGrid?
...
Рейтинг: 0 / 0
12.06.2019, 17:37
    #39825807
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленное выделение строк в DataGrid
После нескольких часов мучений мне удалось найти причину. Класс, что в основе ObservableCollection имеет свое исполнение Equals и GetHashCode методов. Странно, но похоже, что при выделении строчки, эти методы вызываются, что тормозит весь процесс.
...
Рейтинг: 0 / 0
13.06.2019, 08:41
    #39825950
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленное выделение строк в DataGrid
может в виртуализации проблема, а не в методах?
объекты коллекции это структуры?
просто при нажатии Ctrl+A, на сколько я помню, происходит материализация всех элементов списка или DataGrid'а
...
Рейтинг: 0 / 0
13.06.2019, 15:55
    #39826214
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленное выделение строк в DataGrid
Roman Mejtes,

С виртуализацией я пробовал всё возможное.
Коллекция представлена в виде ObservableCollection<MyClass>. В MyClass методы GetHashCode и Equals были overriden, как только удалил "мои" методы, все заработало быстро.
К сожалению, я не знаю, что именно происходит при нажатии Ctrl+A, но точно могу сказать, что GetHashCode вызывается.
...
Рейтинг: 0 / 0
13.06.2019, 16:10
    #39826223
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленное выделение строк в DataGrid
эти методы используются для того, чтоб сравнивать дочерние элементы Selector'а, внутри хранятся списки\справочники выделенных элементов, текущий элемент и т.д. Будет лучше, если вы не будете переопределять эти методы, сделайте реализацию компаратора и используйте её.
либо оберните свои объекты враппером.
другого пути нет, это внутренняя реализация DataGrid контрола :(
...
Рейтинг: 0 / 0
13.06.2019, 20:45
    #39826335
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленное выделение строк в DataGrid
Roman Mejtes,

Это я еще вчера сделал, как только выяснил причину. Но спасибо за участие!
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Медленное выделение строк в DataGrid / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]