У меня проблема с производительностью (WPF Toolkit) DataGrid. Он содержит около 1000 строк (только восемь столбцов), а прокрутка ужасно медленная и медленная. Также начальная загрузка окна, содержащего DataGrid, занимает 5-10 секунд.
Я провел некоторые исследования (с использованием Google и StackOverflow), но не смог найти ничего, кроме рекомендации включить виртуализацию пользовательского интерфейса. Но даже после явного включения прокрутка продолжает работать очень медленно.
Моя DataGrid связана с ICollectionView / CollectionViewSource. Это определяется в XAML следующим образом (столбцы определены явно, а не генерируются автоматически):
<tk:DataGrid x:Name="dataGrid"
ItemsSource="{Binding Path=Bookings}"
AutoGenerateColumns="False"
Grid.Row="1"
EnableRowVirtualization="True"
EnableColumnVirtualization="True"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
...
</tk:DataGrid>
Для DataContext для всего окна задан экземпляр класса, содержащего ICollectionView, с которым связан DataGrid.
Каждый найденный мною блог или форум хвалил производительность DataGrid, поэтому я совершенно очевидно что-то серьезно ошибаюсь. Поскольку я довольно новичок в WPF в целом и особенно в DataGrid, я понятия не имею, как это улучшить. У кого-нибудь есть какой-нибудь совет для меня? Какой у вас опыт работы с DataGrid? Что я делаю не так?
Редактировать: Только что следовал совету этого вопроса, чтобы установить для ширины всех столбцов значение "Авто". Это не изменило плохую производительность прокрутки. Также я не использую DataGridTemplateColumns (только некоторые DataGridTextColumns и две DataGridComboBoxColumns).
Edit2: я использовал Snoop, чтобы посмотреть на мое приложение. То, что я вижу, говорит о том, что виртуализация действительно работает (всего 19 строк, а не тысяча). Но каждая строка содержит 52 элемента, так что они составляют более тысячи элементов. Может ли это быть / проблема?
Большое спасибо!