WPF 数据网格在选择所有行(大约 200 行)时速度很慢



我有一个包含大约 200 行的 DataGrid,当我尝试选择所有行 (Ctrl+A( 时,大约需要 5 秒。行呈现速度很快,但不是选择。到目前为止,我已经检查了转换器、事件和绑定,但没有调用任何选择。有什么想法吗?

编辑:这是一段代码。

视图模型具有以下属性:

        private ObservableCollection<BlaBla> items;
        public ObservableCollection<BlaBla> Items
        {
            get { return items; }
            set { 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 中的选择操作在选择时为每一行调用这些方法。

编辑:。。。甚至对于每个单元格!

相关内容

最新更新