WPF DataGrid加载速度很慢

时间:2018-02-28 10:48:30

标签: c# wpf list datagrid datagridtemplatecolumn

我有 WPF应用,其中包含 DataGrid 。 DataGrid包含10个DataGridTemplateColumns。我向它添加了4个额外的DataGridTemplateColumns,但之后DataGrid的加载速度非常慢。我使用列表作为 ItemSource 。请帮我解决这个问题。

这是我的DataGrid XAML

<DataGrid   VirtualizingStackPanel.IsVirtualizing="False"  
            ScrollViewer.VerticalScrollBarVisibility="Visible" 
            ScrollViewer.CanContentScroll="True"
            BorderBrush="Transparent" 
            ClipToBounds="True" 
            GridLinesVisibility="All"  
            ScrollViewer.HorizontalScrollBarVisibility="Visible"
            HeadersVisibility="Column"  
            VerticalAlignment="Top" Width="600"
            Name="gvGrid" 
            Grid.ColumnSpan="5" 
            Grid.Column="0"
            Grid.Row="1" 
            Grid.RowSpan="7"  
            CanUserDeleteRows="True"  
            CanUserAddRows="False"  
            CanUserResizeColumns="False"   
            CanUserReorderColumns="False" 
            CanUserResizeRows="False"
            IsReadOnly="True"
            CellStyle="{StaticResource DataGridContentCellCentering}" 
            HorizontalAlignment="Left" 
            Height="200" 
            ColumnWidth="*"   
            EnableRowVirtualization="True"
            HorizontalGridLinesBrush="#E7E5E6" 
            VerticalGridLinesBrush="#E7E5E6"
            ColumnHeaderStyle="{StaticResource HeaderStyle}" 
            AlternatingRowBackground="#F6F4F5" 
            AutoGenerateColumns="False" 
            Background="{x:Null}" 
            CurrentCellChanged="gvGrid_CurrentCellChanged">

先谢谢。

1 个答案:

答案 0 :(得分:0)

您可以考虑采取一些预防措施来提高DataGrid的效果。

首先使用虚拟化(只需将属性EnableColumnVirtualizationEnableRowVirtualization设置为true,并避免将DataGrid放入ScrollViewer,因为它会使其无效虚拟化的好处)。第二步,对ItemsSource属性使用异步绑定,即:

ItemsSource="{Binding Path=YourList, IsAsync=True}"

他们应该帮助你。