私は3000行12列のDataGridを持っています。 DataGridは読み取り専用であり、テキストフィールドのみを含みます。これらのテキストフィールドには、50文字を超えないデータが含まれています。これは、DataGridのXAMLです。は、データグリッドのパフォーマンスを最適化するのに役立ちます
<DataGrid SelectionUnit="Cell" Grid.Column="1" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" ScrollViewer.CanContentScroll="False" DataGrid:SelectedItem.AutoScroll="True" SelectedItem="{Binding Path=SelectedItem}" ItemsSource="{Binding Path=GridData}" Name="DataGrid1" >
<DataGrid.Columns>
<DataGridTextColumn Header="{x:Static props:Resources.Header1}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header2}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header3}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header4}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header5}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header6}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}" Visibility="{Binding Path=DataContext.ColumnVisibility, RelativeSource={x:Static RelativeSource.Self}}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header7}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header8}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header9}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header10}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header11}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
<DataGridTextColumn Header="{x:Static props:Resources.Header12}" IsReadOnly="True" Binding="{Binding Path=SomeBindingPath}"/>
</DataGrid.Columns>
</DataGrid>
DataGridをロードするのに30秒と300 MBのRAMがかかります。これはあまりにも大変です。どうすれば修正できますか?
DataGridsにはデフォルトで仮想化が設定されていると思っていましたが、そうは思われません。 VirtualizingStackPanel.IsVirtualizing = "False"をDataGridとDataGridTextColumn要素に追加しようとしましたが、これは役に立ちませんでした。
すでに述べたように、データの行はわずか3000行であるため、データ仮想化を実装する際には何のポイントもありません。あるいは私はすべきでしょうか?
私はまた、次のXAML追加しようとしました:私は、データの仮想化を検討してお勧めします
<DataGrid.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel/>
</ItemsPanelTemplate>
</DataGrid.ItemsPanel>
パターンは*ページング*と呼ばれます。 – Will
VirtualizingStackPanel.IsVirtualizing = "False"は仮想化機能を効果的に無効にしていることに注意してください。 WPFはデフォルトで有効になっています。 – CodeWarrior