C# WPF DataGrid在选择所有行时速度较慢(大约200行)

C# WPF DataGrid在选择所有行时速度较慢(大约200行),c#,wpf,mvvm,datagrid,C#,Wpf,Mvvm,Datagrid,我有一个DataGrid,它包含大约200行,当我尝试选择all(Ctrl+a)时,大约需要5秒钟。行渲染很快,但不是选择。到目前为止,我已经检查了转换器、事件和绑定,但在select上没有调用任何东西。有什么想法吗 编辑: 这是一段代码 ViewModel有一个属性: private ObservableCollection<BlaBla> items; public ObservableCollection<BlaBla> Items

我有一个DataGrid,它包含大约200行,当我尝试选择all(Ctrl+a)时,大约需要5秒钟。行渲染很快,但不是选择。到目前为止,我已经检查了转换器、事件和绑定,但在select上没有调用任何东西。有什么想法吗

编辑: 这是一段代码

ViewModel有一个属性:

        private ObservableCollection<BlaBla> items;
        public ObservableCollection<BlaBla> Items
        {
            get { return items; }
            set { items = value; NotifyPropertyChanged(); }
        }
私有可观察收集项目;
公共可观测收集项目
{
获取{返回项;}
设置{items=value;NotifyPropertyChanged();}
}
此属性设置一次

XAML如下所示:

    <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>

编辑2:
以防万一。C#7.3、.NET 4.7.1和Windows 7 64位。

经过几个小时的搜索,我发现了这个问题。ObservableCollection中的类已重写GetHash和Equals,并且DataGrid中的select操作似乎在选择时为每一行调用这些方法


编辑:…甚至每个单元格

将模式更改为release并尝试一次。您可以共享getter的属性吗?他们有特殊的逻辑吗?+您有任何绑定错误吗?(检查输出->调试窗口)Avinash Reddy,我试过了,结果是一样的。@itaiy,我没有绑定错误。setters中根本没有什么特殊的逻辑。是的,我刚刚删除了对GetHash的覆盖。什么是对GetHash的覆盖?什么被忽略了?GetHash是任何C#对象的方法。您可以在类中重写它。我曾经做过的事,也曾遭受过痛苦。