SelectedObject(s) and Items
There are several ways to populate the PropertyGrid. Properties can be statically defined in XAML, or in
code, just like the native WPF controls. Additionally, the PropertyGrid can automatically display the
properties of any .Net object(s). Best of all, you can use statically defined properties along side
any dynamically generated ones.
Factories
Factories are used to generate properties from the selected object(s), with two factories built-in. The
first uses TypeDescriptor to examine an object's properties, which mimics the Windows Forms PropertyGrid control.
The second factory uses reflection to offer a simpler approach.
Custom factories can be used to provide limitless possibilities, such as providing a collection or XML
document editor.
ComponentModel Attributes
Many of the attributes in the ComponentModel namespace are supported, such as BrowsableAttribute, CategoryAttribute,
DefaultValueAttribute, DescriptionAttribute, DisplayNameAttribute, and many more.
Property Editors
Provide a custom look and/or feel for any property displayed. This includes the value cell, as well as
the name cell. Styles can be applied for simple customizations, or an entirely new data template can be
used for full control.
The PropertyGrid showing various property editors
Category Editors
When simple inline property editors are not enough, category editors can be used.
These allow more complex interfaces to be used inside the PropertyGrid for presenting/modifying specified properties.
Examples of category editors can be seen in Microsoft Expression Blend.
The PropertyGrid showing a category editor, used for modifying three color properties
Expandable Properties and Lazy Loading
Expandable properties, which are properties that expose one or more sub-properties, are fully supported
through the use of ExpandableObjectConverter. Expandable properties can cause problems if there are
cyclic references, but since only the items needed for display are loaded this is not a problem for the
PropertyGrid. This lazy loading feature can also increase load times.
Categorization and Sorting
Properties can be automatically categorized and/or sorted, with support for custom sorting. Additionally, custom
factory can be used to organize the properties so that it suits your needs.
Data Validation
Full support for the WPF validation system, which is used to validate user input, is included.
Error templates, which provide a visual indication of invalid input, can be customized as needed.
When total control is required, event handlers can be used to customize the data validation and error handling.
A custom error template used inside a property editor
Summary Area
Information about the selected item can be shown in a fully customizable and resizable summary area, which
shows the display name and description by default. Includes support for smooth animated transitions when
the content changes.
The default summary area of the PropertyGrid
Theming
Built-in themes are included for the three Office themes and all Windows system themes. While this encompasses
a lot of built-in themes, you can also generate a completely custom tinted theme with a single line of code. For
advanced developers who want even more customization possibilities, we've made all our controls so that they can
be styled and templated and all primitive elements that are used in our built-in control templates are public.
Right-to-left and Localization
UI supports right-to-left layouts and all text in the user interface may be localized to other languages.
XBAP Support
PropertyGrid fully supports use in XBAPs (browser applications). We have specifically engineered it to operate
within the bounds of the XBAP security sandbox and documented areas of note.
Extensive Documentation and Samples
Actipro has spent a lot of time refining the design of PropertyGrid to take advantage of WPF best practices. We
realize that a good product is only part of the equation though and have also worked very hard to write detailed
documentation on the product. In addition to that, PropertyGrid ships with the full source for many QuickStart
examples that each focus on learning a specific feature.
Try a live online demo