If you have used any of the Microsoft data grid controls (WinForms 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 WPF also follows this model, mainly to keep compatibility with the Microsoft grids). The FlexGrid control uses a very different approach.