Are you setting the CellValueType for this cell? If so, then CellValue should return the proper type if it is assigned the proper object.
There is another way you can handle showing nested properties. You can add unbound columns to manage this, and have your Parent class implement ITypedList to help with providing values through QueryCellInfo and SaveCellInfo events.
Here is a little sample.