c# - DataGrid 滚动不流畅

标签 c# wpf xaml datagrid wpfdatagrid

我有一个 DataGrid,它通常包含大约 30 行,很少超过 200 行。我的问题是当用户使用向上/向下箭头键浏览网格的内容时,它一直卡住(大约 10 到 40 秒)然后一次跳几行

我的数据网格

<DataGrid Name="DgInvoiceLines" KeyUp="DgInvoiceLines_KeyUp" BorderBrush="Black"
              RowBackground="Silver" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible"
              AutoGenerateColumns="False" SelectionUnit="FullRow" SelectionMode="Extended" CanUserAddRows="True" CanUserDeleteRows="True" 
              HorizontalContentAlignment="Center" CellEditEnding="DgInvoiceLines_CellEditEnding" VerticalContentAlignment="Center" 
              PreviewKeyDown="DgInvoiceLines_PreviewKeyDown" SelectionChanged="DgInvoiceLines_SelectionChanged" 
              CurrentCellChanged="DgInvoiceLines_CurrentCellChanged" ItemsSource="{Binding}" BorderThickness="0,2,0,0"
              EnableColumnVirtualization="False" EnableRowVirtualization="False" ScrollViewer.CanContentScroll="False">
        <DataGrid.Columns>
            <DataGridTextColumn Width="Auto" Header="ProductCode"  Binding="{Binding ProductCode}"/>
            <DataGridTextColumn Width="250" Header="Description"  Binding="{Binding Description}" FontSize="14"/>
            <DataGridTextColumn Width="61" Header="Inv_Quantity" Binding="{Binding Inv_Quantity}"/>
            <DataGridTextColumn Width="63" Header="Grn_Quantity" Binding="{Binding Grn_Quantity}"/>
            <DataGridTextColumn Width="59" Header="Inv_Price" Binding="{Binding Inv_Price}"/>
            <DataGridTextColumn Width="61" Header="Ord_Price" Binding="{Binding Grn_Price}"/>
            <DataGridTextColumn Width="72" Header="Inv_Total" Binding="{Binding Inv_Total}"/>
            <DataGridTextColumn Width="74" Header="Grn_Total" Binding="{Binding Grn_Total}"/>
            <DataGridTextColumn Width="58" Header="AnalCode" Binding="{Binding AnalCode}"/>
            <DataGridTextColumn Width="60" Header="Vat_Rate" Binding="{Binding Vat_Rate}"/>
            <DataGridTextColumn Width="60" Header="Vat" Binding="{Binding Vat}" IsReadOnly="True"/>
            <DataGridTextColumn Width="Auto" Header="GrnNo"  Binding="{Binding GrnNo}"/>
            <DataGridCheckBoxColumn  Width="Auto" Binding="{Binding Line_Correct}" Header="" >
                <DataGridCheckBoxColumn.CellStyle>
                    <Style TargetType="{x:Type DataGridCell}">
                        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="DataGridCell_PreviewMouseLeftButtonDown"/>
                    </Style>
                </DataGridCheckBoxColumn.CellStyle>
            </DataGridCheckBoxColumn>
            <DataGridTextColumn Width="Auto" Header="Comment" Binding="{Binding Comment}"/>
            <DataGridTextColumn Width="Auto" Header="PerP" Binding="{Binding OuterUnits}" IsReadOnly="True"/>
        </DataGrid.Columns>
        <DataGrid.CellStyle >
                <Style TargetType="{x:Type DataGridCell}">
                    <Style.Triggers>
                        <Trigger Property="IsKeyboardFocused"  Value="True" >
                            <Setter Property="Background" Value="White" />
                            <Setter Property="Foreground" Value="Black" />
                        </Trigger>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Foreground" Value="Black"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
        </DataGrid.CellStyle>
        <DataGrid.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightSteelBlue"/>
        </DataGrid.Resources>
    </DataGrid>

它没有使用 Entity Framework,数据位于非常繁忙的虚拟服务器上。

任何人都可以指出某个地方来寻找解决方案或指出我的 XAML 中的任何问题吗?

编辑

我开始认为我只是想让网格做太多事情!

最佳答案

你禁用了 EnableRowVirtualization 和 EnableColumnVirtualization 并且你在 PreviewKeyDown="DgInvoiceLines_PreviewKeyDown"中做了一些事情

这可能会减慢网格滚动速度

关于c# - DataGrid 滚动不流畅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8534004/

相关文章:

C# 将 MySQL 结果拉入数组

c# - System::Drawing::Bitmap 到 unsigned char *

wpf - 为什么我不能在应用样式后更改文本框背景?

c# - 为什么我的 ItemsControls 中的项目不水平布局?

c# - 是否可以在不同的网格后面有一个组件,在不同的网格上方有一个组件

c# - MVC DropDownListfor() 基础知识

c# - 需要 XML DataContract 反序列化帮助

wpf - 如何将对象 bool 属性绑定(bind)到 CheckBox IsChecked 属性?

WPF - 路径/几何帮助 - 奇怪的形状

wpf - 根据 Visual Studio 主题的变化更改图标