0

私は、DataGrid約100〜200行を持つことができる10〜15列の列を持っています。データグリッドは、タブ コントロール内に配置されます (デフォルトではフォーカスされていません)。

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