У меня проблема с производительностью (DataGrid) WPF Toolkit. Он содержит около 1.000 строк (всего восемь столбцов), а прокрутка очень медленная и медленная. Также начальная загрузка окна, содержащего DataGrid, занимает 5-10 секунд.
Я провел некоторое исследование (используя Google и StackOverflow), но не смог найти ничего, кроме совета по включению виртуализации пользовательского интерфейса. Но даже после того, как явным образом разрешаю эту прокрутку, она продолжает быть очень медленной.
My 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 элемента, поэтому они содержат более тысячи элементов. Возможно, это проблема /
Спасибо большое!