I have a DataGrid which contains around 200 rows and when I try to select all (Ctrl+A) it takes around 5 seconds. Rows rendering is fast but not selection. So far, I have checked on Converter, Events and Bindings but nothing is called on select. Any ideas?
Edit: Here is a piece of code.
ViewModel has a property:
private ObservableCollection<BlaBla> items;
public ObservableCollection<BlaBla> Items
{
get { return items; }
set { items = value; NotifyPropertyChanged(); }
}
This property is set once.
XAML looks like this:
<DataGrid AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="{Binding IsPerformingSimulations, Converter={StaticResource boolToBoolInvert}}" CanUserReorderColumns="False"
CanUserResizeColumns="True" CanUserResizeRows="False" CanUserSortColumns="True" GridLinesVisibility="All" SelectionMode="Extended" SelectionUnit="FullRow"
ItemsSource="{Binding Items}" VirtualizingStackPanel.IsVirtualizing="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Bla1" Binding="{Binding Bla1Prop}" IsReadOnly="True" />
<DataGridTextColumn Header="Bla2" Binding="{Binding Bla2Prop}" IsReadOnly="True" />
<DataGridTextColumn Header="Bla3" Binding="{Binding Bla3Prop}" IsReadOnly="True" />
<DataGridTextColumn Header="Bla4" Binding="{Binding Bla4Prop}" IsReadOnly="True" />
<DataGridTextColumn Header="Bla5" Binding="{Binding Bla5Prop}" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
Edit 2: Just in case. C# 7.3, .NET 4.7.1 and Windows 7 64bit.
After hours of searching I found the issue. The class that is in the ObservableCollection has overriden GetHash and Equals and it appears to be that select action in DataGrid is calling those methods for each row upon selection.
Edit: ...or even for each cell!