Let me address these issues sequentially.
1. It takes a lot of time to load 200 columns.
I've researched your application using a performance profiling tool and see that the issue occurs because GridControl updates its structure 200 times when you add items to the ViewModel.Columns collection. Although you invoke a single extension method (i.e., AddRange), this methods adds all items sequentially, and the Columns collection raises a notification after each modification.
Since you use our
ObservableCollectionCore<T>, you can invoke the BeginUpdate/EndUpdate methods for it to temporarily disable notifications:
//ViewModel.Columns.AddRange(columns); ViewModel.Columns.BeginUpdate(); foreach (var c in columns) ViewModel.Columns.Add(c); ViewModel.Columns.EndUpdate();
This significantly reduces the delay on my side.
2. It takes more time to calculate grid columns' width
The delay is larger because the grid must calculate the width for all 200 columns at once. As I mentioned in the T759440 ticket, the delay will always be larger if you have more columns.
As a possible alternative, you can invoke BestFitColumn only for certain columns in your grid.