У меня есть 3 элемента содержимого, два DataGrid
и StackPanel
, которые необходимо прокрутить вместе в приложении WPF. Все работает нормально с ScrollViewer
, пока у меня есть только небольшой набор данных, но когда я получаю 500 строк с 150 столбцами, он отстает примерно на 8 секунд перед рисованием экрана. Прочитав это: Неоправданное время загрузки WPF DataGrid Я отключил ScrollViewer
, и он загрузился всего за 2,5 секунды.
<ScrollViewer CanContentScroll="True"
HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Visible">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20" />
<RowDefinition Height="22" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<DataGrid x:Name="DataGridViewHeader" CellEditEnding="ColumnNameUpdate" Grid.Row="0" HeadersVisibility="None" HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch" ItemsSource="{Binding}" CurrentCellChanged="DataGridCellChange" Grid.Column="0" DataGridCell.Selected="DataGrid_GotFocus" />
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" Name="ComboBoxPanel" Grid.Row="1" Margin="0,0,0,0" HorizontalAlignment="Left" >
</StackPanel>
<DataGrid x:Name="DataGridView" Grid.Row="2" HeadersVisibility="None" HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch" ItemsSource="{Binding}" CurrentCellChanged="DataGridCellChange" Grid.Column="0"/>
</Grid>
</ScrollViewer>
Проблема в том, что ScrollViewer
предлагает следующий макет, который позволяет мне переименовывать столбцы вверху, использовать выпадающий список во второй строке, чтобы выбрать DataType
этого столбца, а затем отображать данные. С 150 столбцами все они должны оставаться в очереди, но производительность имеет огромный успех.
Хотя я понимаю, что ScrollViewer
- это простое решение, есть ли лучший способ, если учитывать производительность?