A PropertyGrid iterates over a data object's properties, and uses runtime reflection to create suitable editors for editing each of the data object's properties.
In this example, we didn't actually tell the property grid anything about the properties of objects in the lifeforms dataset - instead, we defined a set of templates for different property types (BOOL, ENUM, TEXT etc) and then let runtime reflection do its work.
For this example, the source code shows a cusom property editor for picking the lifeform's image - showing one way that PropertyGrid can be extended.