The DataGrid has the ability to add custom controls to the cell via Template columns; however, the contents of the cell are always visible and there is no way to distinguish between editing and display modes like you can with the type data columns. Furthermore, it may be desirable to create custom column types as the reusability would be easier than using a template or a template selector.
Currently, the DataGrid columns are public and unsealed; however, much of their internals are marked as internal. For example, overriding the CreateCellArranger method would allow custom editor types when the cell is edited. This would require exposing the CellArranger base classes as well.
Please mark more of the internals as public so that truely custom DataGridColumns can be created.