[WPF bug] Сочетание свойств DataGrid EnableColumnVirtualization=”True” и AutoGenerateColumns=”False” приводит к зависанию.

Достался мне как-то баг в пользовательском интерфейсе, исправить который я намеревался минут за 15. Но не тут то было…  Описать баг очень просто: есть окно со списком (DataGrid) при горизонтальном скроллировании приложение зависает.


Приложение грузит процессор? – это хорошо, есть повод запустить профайлер и посмотреть, что именно происходит в момент скроллинга.  Неожиданно  профайлер указал на сам DataGrid и осталось только выяснить какие условия заставляют WPF DataGrid так «виснуть». После продолжительного отбрасывания и комментирования лишнего кода, не влияющего на исследуемое поведение, остался необходимый минимум:  

<DataGrid EnableColumnVirtualization="True" AutoGenerateColumns="False"> </DataGrid>

Оказалось, что я не один столкнулся с таким поведением и в Microsoft connect заведен баг: http://connect.microsoft.com/VisualStudio/feedback/details/742728/wpf-datagrid-hangs-while-scrolling-horizontally, который впрочем, сейчас считается низкоприоритетным ...

В ссылке выше есть минимальный проект на Visual Basic, воспроизводящий баг, а также workaround который в моей ситуации и на моей машине никак не помог. В качестве совета могу сказать, что если у вас используется виртуализация столбцов подумайте, так ли она вам необходима.

Комментарии

Популярные сообщения из этого блога

Производительность запросов с табличными переменными