简体   繁体   English

WPF DataGrid加载非常慢

[英]WPF DataGrid Loading very slow

I have a WPF Application which contains a DataGrid . 我有一个包含DataGridWPF应用程序 The DataGrid contains 10 DataGridTemplateColumns. DataGrid包含10个DataGridTemplateColumns。 I add 4 additonal DataGridTemplateColumns to it,but after that ththe DataGrid loads very slowly. 我向其中添加了4个附加的DataGridTemplateColumns,但是之后DataGrid的加载速度非常慢。 I use List as its ItemSource . 我使用List作为其ItemSource Please help me to solve the issue. 请帮我解决问题。

This is my DataGrid XAML 这是我的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">

Thanks in Advance. 提前致谢。

There are a couple of precautions you can consider for improving your DataGrid 's performance. 您可以考虑采取几种预防措施来提高DataGrid的性能。

First of all use virtualization (just set properties EnableColumnVirtualization and EnableRowVirtualization to true and avoid to put your DataGrid in a ScrollViewer , since it nullifies virtualization's benefits). 首先使用虚拟化(只需将属性EnableColumnVirtualizationEnableRowVirtualization设置为true并避免将DataGrid放在ScrollViewer ,因为它会使虚拟化的好处无效)。 Second step, use an async binding for the ItemsSource property, ie: 第二步,对ItemsSource属性使用异步绑定,即:

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

They should help you. 他们应该帮助您。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM