You might notice a reduced performance of RadGridView control. Below are listed some possible reasons:
RadGridView is placed in a control that measures its children with infinity - such controls are:
- StackPanel (when vertical it measures with infinite height and when horizontal - with infinite width)
- Grid with RowDefinition Height="Auto" or ColumnDefinition Width="Auto".
When RadGridView is measured with infinity UI virtualization is turned off which results in reduced performance. Modify your code so that RadGridView is placed in a container that will not measure it with infinity, for example Grid with RowDefinition Height="*".
Set fixed Width for the columns.
Disable validation in view mode through configuring ValidateOnDataErrors="InEditMode".
Binding to complex properties - If you bind to complex property (sub property) RadGridView uses bindings to get the value for the cell. Better performance will be achieved if you bind to a simple property as we then use the .Net expression API to get the value.
Converters - calling converters will slow down the performance.
CellTemplates - using CellTemplates is a time consuming operation. If applicable, try to stick to the Default Templates.
As of Q1 2012 SP1 you have the option to disable the Telerik StyleManager and to style the controls using Implicit Styles. There are a number of benefits of using implicit styles over the Telerik StyleManager. For more information, please refer to this help article.
As of Q3 2012 a new rendering mode - Flat is available. When you set Flat mode, the control will render rows one below other. This leads to a very good perfromance when there is grouping on several levels defined and a lot of data is populated. You can also refer to the Grouping Modes article.
DataLoadMode="Asynchronous" - using this mode is not recommended, it leads to potential problems. Please do not use it.
Degraded performance with Windows8, Windows8Touch and Office2013 Themes - you can consider applying the lightweight templates in order to speed up the performance. Please check this detailed article, which explain the purpose of these styles.
TouchManager - another optimization would be to disable Touch Support. You can refer to the Touch Support article.
As of Q2 2014 SP release we introduced the option to turn off generating of automation peers through the new global AutomationMode property of the AutomationManager. You can check the UI Automation Support article on how to set the AutomationMode property to Disabled.
Applying a RowStyle or an AlternateRowStyle that modifies the default GridViewRow ControlTemplate will result in a performance hit.
IsPropertyChangedAggregationEnabled - Introduced as of Q2 2015 SP1. Basically, through this property you can control how RadGridView will handle PropertyChanged event. Its default value is True, meaning that the event occurrency will be handled on a fixed time period using a DispatcherTimer, which improves the rendering performance for multiple value updates. When set to False, the resources taken by the aforementioned DispatcherTimer will be freed, thus the overall performance of the control will be improved.
You can also refer to the documentation on Implicit Styles and NoXaml binaries.
As of 2013 Q2 SP we introduced Lightweight Templates for RadGridView and RadTreeListView. Their main idea is to limit the number of visual elements within the templates in order to speed up the performance of the control. Read more.
You can also find the blog post on How To Boost RadGridView Performance for WPF and Silverlight Using Lightweight templates.
- When you have child RadGridViews placed in RowDetails or a Hierarchy structure, make sure to specify fixed dimensions for them (Height/MaxHeight and Width/MaxWidth). Otherwise their UI Virtualization mechanism will be disabled.