0

我有一个DataGrid10-15 列,可以有大约 100-200 行。数据网格放置在 Tab 控件中(默认情况下不在焦点上)。

我试图虚拟化 DataGrid,但是当我单击包含 DataGrid 的选项卡时,程序会冻结 4-5 秒,然后选项卡会打开并显示数据网格。在那之后,行似乎滚动得很快,这很好,但列仍然表现得很慢,就像未虚拟化一样。

当我删除要虚拟化的代码(DataGrid标记中的最后 4 个选项)时,网格会立即显示,但滚动速度非常慢且滞后。

以下是我的数据网格代码:

<DataGrid Name="xDataGridFieldConfig" 
     FrozenColumnCount ="1" 
     HorizontalAlignment="Stretch" 
     HorizontalContentAlignment="Stretch" 
     VerticalAlignment="Stretch" 
     Style="{DynamicResource FieldConfigDataGridHeaderStyle}" 
     AutoGenerateColumns="False" 
     CanUserResizeColumns="False" 
     CanUserResizeRows="False" 
     CanUserReorderColumns="False" 
     SelectionMode="Single" 
     GridLinesVisibility="Horizontal" 
     HorizontalGridLinesBrush="#cbcaca" 
     HeadersVisibility="Column" ItemsSource="{Binding FieldConfigCollection}" 
     VerticalScrollBarVisibility="Auto" 
     HorizontalScrollBarVisibility="Visible" 
     VirtualizingPanel.IsVirtualizingWhenGrouping="True" 
     VirtualizingPanel.VirtualizationMode="Standard"  
     VirtualizingPanel.IsVirtualizing="True" 
     ScrollViewer.CanContentScroll="False">

      <DataGrid.Columns>
          <DataGridTextColumn Header="S No." Binding="{Binding Path=ID}" IsReadOnly="True" Width="80"/>

             <!-- using template for custom checkbox -->
             <DataGridTemplateColumn Header="EN" IsReadOnly="False">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <flatcheckbox:FlatCheckBox x:Name="xFlatCheckBoxFieldConfigEN" Margin="0" IsChecked="{Binding Path=Enabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <flatcheckbox:FlatCheckBox x:Name="xFlatCheckBoxFieldConfigEN" Margin="0" IsChecked="{Binding Path=Enabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>

            </DataGridTemplateColumn>

            <DataGridTemplateColumn Header="Group" Width="150">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                       <TextBlock Name="xTextBlockFieldConfigGroup" Text="{Binding Path=Group, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                       <TextBox Name="xTextBlockFieldConfigGroup" IsEnabled="{Binding Enabled}" Text="{Binding Path=Group, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Padding="0" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
            </DataGridTemplateColumn>

            <!-- 10 similar text-only editable rows -->

       </DataGrid.Columns>

</DataGrid>

我做错了什么吗?如何在我打开选项卡后立即显示数据网格。

4

0 回答 0