The property classes help a programmer to express relationships between data and physical windows, in particular:
With a consistent framework, the programmer should be able to use existing components and design new ones in a principled manner, to solve many data entry requirements.
Each datum is represented in a wxProperty, which has a name and a value. Various C++ types are permitted in the value of a property, and the property can store a pointer to the data instead of a copy of the data. A wxPropertySheet represents a number of these properties.
These two classes are independent from the way in which the data is visually manipulated. To mediate between property sheets and windows, the abstract class wxPropertyView is available for programmers to derive new kinds of view. One kind of view that is available is the wxPropertyListView, which displays the data in a Visual Basic-style list, with a small number of controls for editing the currently selected property. Another is wxPropertyFormView which mediates between an existing dialog or panel and the property sheet.
The hard work of mediation is actually performed by validators, which are instances of classes derived from wxPropertyValidator. A validator is associated with a particular property and is responsible for responding to user interface events, and displaying, updating and checking the property value. Because a validator's behaviour depends largely on the kind of view being used, there has to be a separate hierarchy of validators for each class of view. So for wxPropertyListView, there is an abstract class wxPropertyListValidator from which concrete classes are derived, such as wxRealListValidator and wxStringListValidator.
A validator can be explicitly set for a property, so there is no doubt which validator should be used to edit that property. However, it is also possible to define a registry of validators, and have the validator chosen on the basis of the role of the property. So a property with a "filename" role would match the "filename" validator, which pops up a file selector when the user double clicks on the property.
You don't have to define your own frame or window classes: there are some predefined that will work with the property list view. See Window classes for further details.