The PropertyGrid control allows for all the properties of one or more objects to be displayed, optionally using categories. Pre-defined editors for modifying properties are auto-generated based on property type, and custom property/category editors can be easily created, allowing for total customization of the property editing experience.
The TreeListBox control is extremely fast, lightweight, and displays a single-column tree similar to the Visual Studio Solution Explorer tree control. The TreeListView control is a multi-column variant of TreeListBox that renders similar to a standard ListView but has many additional features.
The PropertyGrid control is similar to the classic Windows Forms PropertyGrid control where one or more data objects can be specified. A data factory examines those objects to look for properties and generates a data model for each property that was located. The resulting data models are passed back to the property grid and are presented as rows in a virtualized scrollable tree grid of name and value columns. Since PropertyGrid is based on our TreeListView control, it fully supports expandable categories and nested properties. An optional resizable summary area can show additional information about the selected property.
Property editors specify the UI to use for the display of the property name and value. Built-in editors are availble for basic property types, but the property grid is very flexible and allows custom property editors to be defined too. In fact, the Actipro Editors product (sold separately) has full integration with the property grid, meaning that it's easy to use Editors' DoubleEditBox to edit Double property values, DateTimeEditBox to edit DateTime property values, etc. Custom property editors can target properties by type and/or name and the templates used by property editors can host any custom XAML content.
When simple inline property editors are not enough, category editors can be used. These allow more complex interfaces to be used inside the property grid for presenting/modifying specified properties.
Properties can be grouped together into categories, and nested categories are even supported. While categories and properties are sorted by default using built-in logic, any custom logic can be introduced to apply a customized sort order.
A powerful filtering mechanism with pre-defined filters for string, boolean, or predicate-based logic is provided. These features make it easy to filter the displayed properties by any criteria. A common filtering usage scenario is to allow an end user to type a property name in a TextBox and the property grid updates to only show properties whose names contain the text.
You have full control over the data models that are generated, and can customize the data factory to suit your needs. Additional property models can be injected into the default property models generated by the data factory. Or the data factory can be customized to prevent certain property models from being used. Expandable collection display and inline collection editing is provided by the default data factory for certain scenarios. Finally, custom data factories allow limitless possibilities, such as providing a XML document editor.
The tree controls in the Grids product were built from scratch to present tree structures with maximum performance. They use a single ItemsControl and virtualization techniques to keep UI elements to a minimum and allow for smooth vertical scrolling. An item adapter design achieves fast data access, making it possible to load hundreds of thousands of nodes into a tree very quickly.
TreeListBox presents tree node data in a single column, similar to a traditional TreeView. It supports nearly all of the advanced tree features found in the Visual Studio Solution Explorer, along with many more.
TreeListView is multi-column variant of the TreeListBox control that renders like traditional ListView, but has all the tree and advanced features found in TreeListBox. It also provides the foundation of our PropertyGrid control.