If you have used any of the Microsoft data grid controls (WinForms, Silverlight, or WPF), you probably know that in order to do any significant customization you have to create custom Column objects, override several methods, then add the custom columns to the grid using code. This is not a bad approach (the DataGrid control for Silverlight and WPF also follows this model, mainly to keep compatibility with the Microsoft grids). The C1FlexGrid control uses a very different approach.