Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
12.06.2019, 15:07
|
|||
---|---|---|---|
Медленное выделение строк в DataGrid |
|||
#18+
Приветствую, коллеги! Столкнулся с весьма странным багом в DataGrid при выделении всех строк или относительно большого числа. Имеется DataGrid, например, с 200 строками и порядка 20 колонками. При нажатии Ctrl+A или выделении мышкой сразу всех подвисает на секунд 5. Рендеринг строк происходит быстро, но не выделение. Как пробовал побороть. Убирал все конверторы. Задавал настройки Visualization в разных комбинациях. Событий на DataGrid нет. Проверил Bindings, но нигде нет чего-либо, что исполнялось бы при выделении. Есть идеи, что может приводить к такому поведению DataGrid? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.06.2019, 17:37
|
|||
---|---|---|---|
Медленное выделение строк в DataGrid |
|||
#18+
После нескольких часов мучений мне удалось найти причину. Класс, что в основе ObservableCollection имеет свое исполнение Equals и GetHashCode методов. Странно, но похоже, что при выделении строчки, эти методы вызываются, что тормозит весь процесс. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.06.2019, 08:41
|
|||
---|---|---|---|
|
|||
Медленное выделение строк в DataGrid |
|||
#18+
может в виртуализации проблема, а не в методах? объекты коллекции это структуры? просто при нажатии Ctrl+A, на сколько я помню, происходит материализация всех элементов списка или DataGrid'а ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.06.2019, 15:55
|
|||
---|---|---|---|
Медленное выделение строк в DataGrid |
|||
#18+
Roman Mejtes, С виртуализацией я пробовал всё возможное. Коллекция представлена в виде ObservableCollection<MyClass>. В MyClass методы GetHashCode и Equals были overriden, как только удалил "мои" методы, все заработало быстро. К сожалению, я не знаю, что именно происходит при нажатии Ctrl+A, но точно могу сказать, что GetHashCode вызывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.06.2019, 16:10
|
|||
---|---|---|---|
|
|||
Медленное выделение строк в DataGrid |
|||
#18+
эти методы используются для того, чтоб сравнивать дочерние элементы Selector'а, внутри хранятся списки\справочники выделенных элементов, текущий элемент и т.д. Будет лучше, если вы не будете переопределять эти методы, сделайте реализацию компаратора и используйте её. либо оберните свои объекты враппером. другого пути нет, это внутренняя реализация DataGrid контрола :( ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=21&mobile=1&tid=1440325]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 268ms |
total: | 391ms |
0 / 0 |