Performance

RadPropertyGrid’s API allows you to tweak your application for optimal performance. If you are a developer who wants to use RadPropertyGrid, you should familiarize yourself with the following details:

  • RadPropertyGrid supports UI Virtualization, which processes only information loaded in the viewable area, which will reduce the memory footprint of the application and speed up its loading time, thus enhancing the UI performance. Read more.

  • Avoid using converters. Calling a converter is a time-consuming operation and this will slow down the performance.

  • Try not to place RadPropertyGrid in controls/panels which will measure it with infinity. For example, ScrollViewer, StackPanel and Grid with Row.Height=Auto or Column.Width=Auto will measure with infinity. If RadPropertyGrid is measured with infinity it will have an infinite amount of space to arrange the fields, so it will try to arrange all of them.

  • If applicable, try to stick to the default templates and avoid overriding the templates of fields.

  • As of Q2 2014 SP release we introduced the option to turn off the generating of the automation peers through the new global AutomationMode property of the AutomationManager. You can check the UI Automation Support article for more information.

    Example 1: Setting AutomationMode

        public App() 
        { 
            AutomationManager.AutomationMode = AutomationMode.Disabled; 
            this.InitializeComponent(); 
        } 
    
        Public Sub New() 
            AutomationManager.AutomationMode = AutomationMode.Disabled 
            Me.InitializeComponent() 
        End Sub 
    
  • Another optimization would be to disable the Touch Support via the TouchManager. You can refer to the Touch Support article for more information.

    Example 2: Disabling touch support

        public App() 
        { 
            TouchManager.IsEnabled = false; 
            this.InitializeComponent(); 
        } 
    
        Public Sub New() 
            TouchManager.IsEnabled = False 
            Me.InitializeComponent() 
        End Sub 
    
  • As of Q1 2012 release we have introduced the option to enable/disable searching in nested properties through the SearchInNestedProperties property of RadPropertyGrid (the default value is False). Setting it to True, can lead to degraded performance, when you have a lot of visible nested properties.

  • As of Q1 2014 release we have introduced the option to enable/disable editor caching through the EnableEditorCaching property of RadPropertyGrid (the default value is True). Setting it to False, can lead to degraded performance, since a new instance of the editor for each field will be created when the same PropertyDefinition serves as data context (i.e. search, grouping).

  • When adding/removing a lot of PropertyDefinitions (for example more than 100) at runtime, you should consider invoking the respective SuspendNotifications() and ResumeNotifications() methods and raise notifications only once for all the operations.

    Example 3: Suspending notifications while adding property definitions

        this.propertyGrid.PropertyDefinitions.SuspendNotifications(); 
        foreach (PropertyDefinition propertyDefinition in largeCollectionOfPropertyDefinitions) 
        { 
            this.propertyGrid.PropertyDefinitions.Add(propertyDefinition); 
        } 
        this.propertyGrid.PropertyDefinitions.ResumeNotifications(); 
    
        Me.propertyGrid.PropertyDefinitions.SuspendNotifications() 
        For Each propertyDefinition As PropertyDefinition In largeCollectionOfPropertyDefinitions 
            Me.propertyGrid.PropertyDefinitions.Add(propertyDefinition) 
        Next propertyDefinition 
        Me.propertyGrid.PropertyDefinitions.ResumeNotifications() 
    

See Also

In this article