In This Article

Converting to v17.1

The 17.1 version has new lightweight implementations of the Editors and PropertyGrid controls created that are much more performant, use less memory, and still provide a wide array of features. These infrastructure changes did require some breaking changes and some API cleanup was performed at the same time. All of the breaking changes are detailed in the linked topics below.

Note

Please read through the Licensing topic's section on licenses.licx files. In the 17.1 version we improved the licenses.licx file licensing mechanism to only use a single entry that covers all Actipro products you've licensed. Now a single new entry is used, and all older Actipro entries should be removed.

Massive Updates to Editors

The old versions of the edit boxes in Editors, while providing many features, were very complex and used many UI elements to support their functionality. This meant that windows with a lot of editors (such as when used in property grids or grids) could be very memory intensive and take a while to load.

For the 17.1 version, we reimplemented them with a design that is code-compatible with the Universal Windows variations of Editors. These new edit boxes are now lightweight controls that harness a native TextBox control in their templates. They use far fewer elements and bindings than before and load very quickly. New edit boxes, pickers, and other miscellaneous controls have been added as well.

While we fully encourage you to upgrade your existing applications that use the older Editors product to the new version so that you can continue to receive the latest feature additions and bug fixes, we are also shipping a legacy version of the old assembly that can temporarily be used in the interim for full backward compatibility.

Note

The new Editors contains most, but not all of the features in the old version, along with many new features. If the new version is missing a feature area that you need that was in the old version, please write our support team and we can work with you to determine if it's feasible to add back in.

General PartEditBox and Part Updates

The part edit box infrastructure was completely rewritten in the 17.1 version to use a native TextBox control in templates and to be lighter weight in terms of elements. Most of the features of the old edit boxes are still available in the new version, along with many new ones, but some lesser-used features were removed in scenarios where they didn't add much value and would have introduced extensive complexity to the controls. A benefit of using TextBox as the primary input method is that now features like IME input and rich UIA are fully supported.

The old version's part edit boxes had a three tier infrastructure: edit box, part groups, and parts. Now part edit boxes have two-tiers: edit box and parts.

Edit boxes no longer work like an items control in terms of how UI is constructed (there are no more placement slots). Some edit boxes have templates that contain preview swatches (like for Brush or Color display) that are left-aligned. All edit boxes have a TextBox that allows text entry of a string representation of the object being edited. Many edit boxes have an optional drop-down button that shows if the HasPopup property is true. The template of each edit box can be customized if additional buttons or UI needs to be added.

  • In an effort to simplify the object model, part groups no longer exist in the new version. ArePartGroupsDisabledWhenUnchecked, ArePartGroupsSelectable, and DefaultPartGroupVisibility properties removed.

  • Since a simpler TextBox is used for input, several properties no longer apply. BackgroundEditable, BackgroundNonEditable, ForegroundEditable, and ForegroundNonEditable properties removed.

  • Similarly, CenterSlotHorizontalAlignment, CenterSlotMargin, LeftSlotMargin, and RightSlotMargin properties removed. If you need to alter the alignment of the text in the TextBox, use the TextAlignment property instead.

  • Nullable edit boxes no longer have a checkbox. Instead, select all the text and delete it to null out a nullable edit box. IsChecked, CheckBoxInactiveVisibility, CheckBoxMargin, CheckBoxPlacementOrder, CheckBoxPlacementSlot, CheckBoxTemplate, and CheckBoxVisibility properties removed.

  • The InitialValue property was removed since the former checkbox used to initialize it. However, numerous edit boxes have a new DefaultValue property that is similar and is used as the value to set when incrementing/decrementing (via spinner or arrow keys) from a null value.

  • The drop-down button is now defined in each edit box control's template so placement properties no longer apply. DropDownButtonInactiveVisibility, DropDownButtonMargin, DropDownButtonPlacementOrder, DropDownButtonPlacementSlotSpinnerTemplate, DropDownButtonTemplate, DropDownHorizontalAlignment, and DropDownStaysOpen properties removed.

  • DropDownButtonVisibility property removed. Use HasPopup property instead.

  • DropDownClosed and DropDownOpened events removed.

  • DropDownContent, DropDownContentTemplate, and DropDownContentTemplateSelector properties removed. Each edit box now has a related picker (i.e., DatePicker for DateEditBox) and its style can be set via PopupPickerStyle. This Style value can set a new Template for the picker if needed.

  • Focus (overload) and SelectFirstGroup methods removed. Use the normal Focus method instead.

  • Hint, HintTemplate, HintTemplateSelector, IsHintTransitioningEnabled, and IsHintVisible properties removed. Use PlaceholderText property instead.

  • IsDropDownButtonTransparencyModeEnabled property removed. Use UsageContext property instead.

  • IsDropDownOpen property removed. Use IsPopupOpen property instead.

  • IsFocusMovedOnTerminalMatches property removed.

  • MaxDropDownHeight, MaxDropDownWidth, MinDropDownHeight, and MinDropDownWidth properties removed.

  • PartValueCancelTriggers property and PartValueCancelTriggers type removed.

  • PartValueCommitTriggers property renamed to CommitTriggers, and PartValueCommitTriggers type renamed to PartEditBoxCommitTriggers.

  • PromptIndicatorVisibility property removed.

  • SelectFirstGroup method removed. SelectAll method can be used instead.

  • SpinBehavior property renamed to SpinWrapping and related SpinBehavior enum renamed to SpinWrapping.

  • SpinnerInactiveVisibility property removed and SpinnerVisibility property return value changed to cover both former properties. Use the revised SpinnerVisibility property instead.

  • Spinner is now defined in each edit box control's template so placement properties no longer apply. SpinnerMargin, SpinnerPlacementOrder, SpinnerPlacementSlot, and SpinnerTemplate properties removed.

In addition to the above, some number-oriented edit boxs have had these property changes:

PropertyGrid Integration Updates

The new ActiproSoftware.Editors.Interop.Grids.Wpf.dll assembly provides integration of edit boxes with the PropertyGrid control. found in the Grids product via the use of custom property editors. This feature is similar to what was in the old ActiproSoftware.Editors.Interop.PropertyGrid.Wpf.dll assembly. Several of the property editor classes (like BrushPropertyEditor, etc.) have had property updates to correspond to the related edit box property changes (adds, renames, or removes) described in this topic. Also the MaskedTextBoxPropertyEditor class is now named MaskedStringPropertyEditor.

The Editors and PropertyGrid Interoperability topic covers the property editors that are available, including additional ones like DatePropertyEditor, to integrate edit boxes with PropertyGrid and how to do so in the new version.

DataGrid Integration Updates

The new ActiproSoftware.Editors.Interop.DataGrid.Wpf.dll assembly provides easy integration of edit boxes with the native WPF DataGrid control. Several of the column classes (like DataGridBrushColumn, etc.) have had property updates to correspond to the related edit box property changes (adds, renames, or removes) described in this topic. Also the DataGridMaskedTextColumn class is now named DataGridMaskedStringColumn.

The Editors and DataGrid Interoperability topic covers the column classes that are available, including additional ones like DataGridDateColumn, to integrate edit boxes with DataGrid.

Ribbon Integration Updates

The old ActiproSoftware.Editors.Interop.Ribbon.Wpf.dll assembly, which provided Ribbon control-like appearance for edit boxes via a RibbonEditorsStyleBehavior class is no longer used in the new version. Instead the new edit box templates include a built-in special mode that can be activated for toolbar/Ribbon contextual usage.

The Editors and Ribbon Interoperability topic covers the properties that should be set on edit boxes to achieve a Ribbon control-like appearance, and to also optionally support labels.

AnalogClock Changed to TimePicker

The AnalogClock control has been removed. Use the new TimePicker control instead.

BrushEditBox Updates

  • AllowGradientBrushes property renamed to IsGradientAllowed.
  • BrushEditorStyle property renamed to PopupPickerStyle.
  • BrushPreviewInactiveVisibility property removed and swatch is always visible now.
  • BrushPreviewMargin property renamed to SwatchMargin.
  • BrushPreviewPlacementOrder property removed.
  • BrushPreviewPlacementSlot property removed.
  • BrushPreviewTemplate property removed.
  • BrushPreviewVisibility property renamed to HasSwatch.
  • IsAlphaComponentEditable property removed.
  • IsAlphaComponentVisible property renamed to IsAlphaEnabled.

BrushEditor Changed to BrushPicker

The BrushEditor and BrushPreviewControl controls have been removed. Use the new BrushPicker control instead.

Calculator Updates

ColorEditBox Updates

  • ColorEditorStyle property renamed to PopupPickerStyle.
  • ColorPreviewInactiveVisibility property removed and swatch is always visible now.
  • ColorPreviewMargin property renamed to SwatchMargin.
  • ColorPreviewPlacementOrder property removed.
  • ColorPreviewPlacementSlot property removed.
  • ColorPreviewTemplate property removed.
  • ColorPreviewVisibility property renamed to HasSwatch.
  • EditableParts property and related ColorEditableParts enumeration removed.
  • ExportFormat property removed.
  • Format property removed.
  • IsAlphaComponentVisible property renamed to IsAlphaEnabled.

ColorEditor Changed to ColorPicker

The ColorEditor control has been removed. Use the new ColorPicker control instead.

CornerRadiusEditBox Updates

  • EditableParts property and related CornerRadiusEditableParts enumeration removed.

DateTimeEditBox Updates

  • AnalogClockStyle and MonthCalendarStyle properties removed. Use PopupPickerStyle with a DateTimePicker style instead.

  • DateValue property removed. Use the new DateEditBox control when doing date-only selection.

  • DefaultDropdownContentType property removed since there are separate DateTimeEditBox, DateEditBox, and TimeEditBox controls now.

  • EditableParts property and related DateTimeEditableParts enumeration removed.

  • ExportFormat property removed.

DateTimeEditor Changed to DateTimePicker

The DateTimeEditor control has been removed. Use the new DateTimePicker control instead.

EnumEditBox Updates

  • EnumListBoxStyle property renamed to PopupPickerStyle.
  • UseDescriptionAttributes property renamed to UseDisplayAttributes. Both DescriptionAttribute and DisplayAttribute are now supported.

EnumListBox Updates

  • DisplayMode property and related EnumListBoxDisplayMode enumeration removed.
  • IsItemsSourceAutoUpdated property removed.
  • EnumListBoxStyle property renamed to PopupPickerStyle.
  • UseDescriptionAttributes property renamed to UseDisplayAttributes. Both DescriptionAttribute and DisplayAttribute are now supported.

EnumListBoxItem Updates

  • DisplayMode property removed.
  • UseDescriptionAttributes property removed.

GuidEditBox Updates

  • NewGuidButtonInactiveVisibility property removed and swatch is always visible now.
  • NewGuidButtonMargin property removed.
  • NewGuidButtonPlacementOrder property removed.
  • NewGuidButtonPlacementSlot property removed.
  • NewGuidButtonTemplate property removed.
  • NewGuidButtonVisibility property removed. Set IsReadOnly to true to hide the button.
  • SetValueToNewGuid property renamed to NewGuidCommand.

Int32RectEditBox Updates

  • EditableParts property and related RectEditableParts enumeration removed.

MaskedTextBox Updates

  • MaskedTextBox changed to inherit the native TextBox control.
  • IsMatchedChanged event changed to be an EventHandler.
  • IsMatchedTerminally property and IsMatchedTerminallyChanged event removed
  • MaskType property renamed to MaskKind, and related MaskType enumeration renamed to MaskKind.
  • PromptBrush, PromptGeometry, and PromptIndicatorType properties removed since MaskedTextBox now inherits the native TextBox instead of rendering prompt glyphs itself.
  • TextChanged and TextChanging events changed to use the native TextBox versions, since MaskedTextBox how inherits TextBox.

MonthCalendar Updates

  • ActiveViewMode and MaxViewMode properties changed to return MonthCalendarViewMode, renamed from CalendarViewMode.
  • AreTransitionAnimationsEnabled property removed and animations always occur.
  • BeginUpdate/EndUpdate methods removed.
  • ClearButtonContent property changed to a string and renamed to ClearButtonText.
  • ClearButtonContentTemplate property removed. Use the new ClearButtonStyle property instead.
  • DayItemStyle and DayItemStyleSelector properties removed. Use the new DayItemTemplate property instead.
  • DayOfWeekItemStyle and DayOfWeekItemStyleSelector properties removed. Use the new DayNameItemContainerStyle and DayNameItemTemplate properties instead.
  • DecadeItemStyle and DecadeItemStyleSelector properties removed. Use the new DecadeItemTemplate property instead.
  • IsDayOfWeekHeaderVisible property removed, and header will always be visible.
  • MaxDate property renamed to Maximum.
  • MinDate property renamed to Minimum.
  • MonthItemStyle and MonthItemStyleSelector properties removed. Use the new MonthItemTemplate property instead.
  • NextViewButtonStyle and PreviousViewButtonStyle properties removed. Use the new NavigationButtonStyle property instead.
  • Refresh method added a parameter.
  • SelectedDates property changed to use a new DateRangeCollection implemention in the Shared Library.
  • SelectionChanged event declaration changed.
  • SelectionChanging event removed.
  • SelectionMode property changed to return MonthCalendarSelectionMode, renamed from CalendarSelectionMode.
  • ViewResetMode property changed to return MonthCalendarViewResetMode, renamed from CalendarViewResetMode.
  • WeekNumberItemStyle and WeekNumberItemStyleSelector properties removed. Use the new WeekNumberItemContainerStyle and WeekNumberItemTemplate properties instead.
  • YearItemStyle and YearItemStyleSelector properties removed. Use the new YearItemTemplate property instead.

PasswordBox Removed

Use the native PasswordBox control instead.

PointEditBox Updates

  • EditableParts property and related PointEditableParts enumeration removed.

Rating Updates

  • IsReadOnly property removed. Set the IsEnabled property to false to simulate read-only mode.

RatingItem Updates

RectEditBox Updates

  • EditableParts property and related RectEditableParts enumeration removed.

SizeEditBox Updates

  • EditableParts property and related SizeEditableParts enumeration removed.

Spinner Updates

TextBox Removed

Use the native TextBox control instead.

ThicknessEditBox Updates

  • EditableParts property and related ThicknessEditableParts enumeration removed.

TimeEditor Changed to TimePicker

The TimeEditor control has been removed. Use the new TimePicker control instead.

TimeSpanEditBox Updates

  • EditableParts property and related TimeSpanEditableParts enumeration removed.
  • ExportFormat property removed.

VectorEditBox Updates

  • EditableParts property and related VectorEditableParts enumeration removed.

Temporary Inclusion of Older Editors and Interop Legacy Assemblies

We recognize that for the 17.1 version, numerous breaking changes were made and that you might not be able to immediately update to the newer logic. While we fully encourage you to do so since all future updates and maintenance will only be done on this newer Editors codebase, we still offer the older Editors version along with its related interop assemblies.

These older legacy assemblies are not installed by default. You must check the 'Control Assemblies / Legacy' option in the installer to install them. Once you do so, these Editors-related assemblies will appear in a 'Legacy' subfolder of the Actipro assembly install folder (see the Deployment topic for the default location), but will not appear in the GAC:

  • ActiproSoftware.Editors.Legacy.Wpf.dll
  • ActiproSoftware.Editors.Interop.DataGrid.Legacy.Wpf.dll
  • ActiproSoftware.Editors.Interop.PropertyGrid.Legacy.Wpf.dll
  • ActiproSoftware.Editors.Interop.Ribbon.Legacy.Wpf.dll

You will be able to reference the ActiproSoftware.Editors.Legacy.Wpf.dll assembly in place of the new ActiproSoftware.Editors.Wpf.dll assembly to maintain full backward compatibility with the old version, while you work on upgrading your application to the new version.

See the Licensing topic for info on how to add an entry to the licenses.licx file (updated info added in v17.1).

Do NOT reference both the ActiproSoftware.Editors.Wpf.dll and ActiproSoftware.Editors.Legacy.Wpf.dll assemblies (or similar for interop assemblies) in the same project, since they have many types/members named the same.

Again, these legacy assemblies will only be included temporarily. We encourage you to upgrade your code to the latest Editors assembly as soon as it is feasible so that you can continue to receive the latest product feature additions and bug fixes.

Massive Updates to PropertyGrid, Moved Into Grids Assembly

The old PropertyGrid control was very feature-rich and was very customizable. The downside of it was that it was relatively slow to load objects and didn't make the best use of virtualization.

For the 17.1 version, we are introducing a new Grids product that replaces the old PropertyGrid product. Customers who have active PropertyGrid license subscriptions will get Grids for free, and Grids is included in WPF Studio similar to how PropertyGrid was. Grids first started off with implementations of tree controls (TreeListBox and TreeListView) that were built from the ground up to render tree structures in a highly-performant way, making full use of virtualization. The new PropertyGrid extends these controls and loads large complex objects instantly, even in cases where the old PropertyGrid may have taken several seconds to load. The entire data model and data factory design has been rewritten to be simpler and easier than ever to customize, while retaining all of the abilities found in the old PropertyGrid. Integration with the new Editors controls continues to be fully supported.

While we fully encourage you to upgrade your existing applications that use the older PropertyGrid product to the new Grids version so that you can continue to receive the latest feature additions and bug fixes, we are also shipping a legacy version of the old assembly that can temporarily be used in the interim for full backward compatibility.

Control Infrastructure Redesigned

In the 17.1 version, the entire core infrastructure of the control hierarchy for property grid was redesigned. It now is based on our new tree controls (TreeListBox and TreeListView) and is much faster as a result.

The new tree controls allow custom columns to be inserted and the ability to resize columns can be disabled by setting the CanColumnsResize property (formerly named AreDefaultColumnsResizable) to false. See the Columns topic for details on columns, resizing, and creating custom columns.

SelectedObject(s) Properties Renamed to DataObject(s)

Since the new base tree controls have a number of "Select*" properties like SelectedItem that generally correspond to which "row" (PropertyGridItem) is selected, we renamed the former SelectedObject and SelectedObjects properties to DataObject and DataObjects respectively.

Data Accessors and Factories Redesigned

The former data accessors (now called data models) and data factories have been redesigned. The concepts behind them are similar to before but there are different class names used (all in the ActiproSoftware.Windows.Controls.Grids.PropertyData namespace) and some properties on the data models may be different to accommodate new features and general API cleanup. The Data Models and Factories topic digs into these areas in detail.

Interface and Class Mappings

While the data model API has been redesigned, many of the new interfaces and classes generally resemble the old ones. Data model types are now in the ActiproSoftware.Windows.Controls.Grids.PropertyData namespace. Here are some quick notes on conversion:

  • IDataAccessor interface is now IDataModel.
  • DataAccessorBase class is now DataModelBase.
  • IPropertyDataAccessor interface is now IPropertyModel.
  • PropertyDataAccessorBase class is now PropertyModelBase.
  • CachedPropertyDataAccessorBase class is now CachedPropertyModelBase.
  • PropertyDescriptorDataAccessorBase and PropertyDescriptorDataAccessor classes are now PropertyDescriptorPropertyModel.
  • CollectionPropertyDescriptorDataAccessor class is now CollectionPropertyDescriptorPropertyModel.
  • MergedPropertyDataAccessor class is now MergedPropertyModel.
  • ImmutablePropertyDescriptorDataAccessor class is no longer needed.
  • PropertyGridPropertyItem (a class you could use to directly define a property in XAML) is now PropertyModel. Instances can be added to the PropertyGrid.Properties collection.
  • ICategoryDataAccessor interface is now ICategoryModel.
  • CategoryDataAccessor class is now CategoryModel.
  • PropertyGridCategoryItem (a class you could use to directly define a category in XAML) is removed. Instead, add PropertyModel instances to the PropertyGrid.Properties collection and assign the proper category name to each PropertyModel. The properties will be automatically categorized by the data factory.
  • ICategoryEditorDataAccessor interface is now ICategoryEditorModel.
  • CategoryEditorDataAccessor class is now CategoryEditorModel.

PropertyGridDataAccessorItem Removed and Binding Changes

In the old version, each IPropertyDataAccessor you supplied to the property grid either via a data factory or directly as PropertyGridPropertyItem was "wrapped" by a PropertyGridDataAccessorItem. Bindings in name and value data templates used to need to have RelativeSource={RelativeSource AncestorType={x:Type propgridPrimitives:IPropertyDataAccessor}}, which would locate and return the wrapper PropertyGridDataAccessorItem. While the wrapper exposed most common properties to the data templates, if you needed direct access to the "wrapped" data accessor, you could look at the DataContext of the PropertyGridDataAccessorItem. Needless to say, this design was confusing and not performant due to all bindings needing to do ancestor searching.

The new data model API is much more straightforward, faster, and the idea of PropertyGridDataAccessorItem has been removed. Any IPropertyModel supplied to the property grid either via a data factory or directly via PropertyGrid.Properties is used as the data context for all name and value data templates. This means that all control bindings work directly off the source property model with no ancestor searching needed.

Data Accessor Properties

Some properties on the interfaces/classes mentioned above have been changed or renamed as well. While several notable model changes are described below, see the Data Models and Factories topic for details on how to use the new data model API.

Here are some quick notes on conversion:

  • CanReset property is now CanResetValue.
  • IsMergable property is now IsMergeable.
  • IsReadOnly property is now IsValueReadOnly. IsReadOnly is still there, but is now a resolved value per below.
  • One Refresh method overload removed.
  • Reset method is now ResetValue.
  • ValueName property is now Name.

The property structure for property models to indicate read-only state has changed. In the old data accessors, there was an IsReadOnly property that returned whether the data accessor was read-only and then in the property editor value template, triggers examined that along with a lookup to the ancestor PropertyGrid to see if it was read-only. If either of those were true, setters would make the controls in the template read-only or disabled as appropriate. In the new property model API, the IPropertyModel.IsReadOnly property now returns a resolved result of whether the property is read-only, by looking at the IsHostReadOnly property (which comes from PropertyGrid.IsReadOnly) and the IsValueReadOnly property (which returns whether the property value itself is read-only. This is a nicer design since the one resolved IsReadOnly can be bound directly to controls in property editor value templates. Any logic that used to be in old data accessor's IsReadOnly property should be moved to determine the IsValueReadOnly property value now.

Data Factories

In regards to data factories, the abstract DataFactory class is now DataFactoryBase and the TypeDescriptorFactory class is still named TypeDescriptorFactory, but has an updated API. There is no need for TypeReflectionFactory any more, so it has been removed. Data factory types are now in the ActiproSoftware.Windows.Controls.Grids.PropertyData namespace.

Property Editors Changes

Property editors have been reworked to an extent. Instead of the old BuiltinEditors class that had resource key properties, there are now numerous properties on PropertyGrid like DefaultStringNameTemplate and DefaultStringValueTemplate that can be changed to customize the appearance of all built-in name/value editors.

The global BuiltinEditors.PropertyEditors collection is renamed to PropertyGrid.DefaultPropertyEditors. The PropertyEditorModifier class and its related actions have had some API changes to make them easier to use. The former PropertyEditorModifier concept is now implemented through the PropertyGridPropertyEditorsModifier class and its updated API explained in detail in the Property Editors topic.

In the past, a custom DataTemplate used for value editors would have to use FindAncestor bindings to bind to the value and other data model properties. The actual data context for the DataTemplate was the PropertyEditor object. In the new version, the data context for the DataTemplate is now the IPropertyModel, making it much easier to bind to any property on the data model. Additionally, the PropertyEditor used to display the DataTemplate, if any, is available via the IPropertyModel.ValuePropertyEditor property. Each DataTemplate is now much smaller and simpler, which helps improve property grid performance.

See the Property Editors topic for detailed information on how property editors work in the new version and how to completely customize them.

Integration with Editors Updated

The new ActiproSoftware.Editors.Interop.Grids.Wpf.dll assembly provides integration of edit boxes with the property grid via the use of custom property editors. This feature is similar to what was in the old ActiproSoftware.Editors.Interop.PropertyGrid.Wpf.dll assembly. Several of the property editor classes (like BrushPropertyEditor, etc.) have had property updates to correspond to the related edit box property changes (adds, renames, or removes). Also the MaskedTextBoxPropertyEditor class is now named MaskedStringPropertyEditor.

The Editors and PropertyGrid Interoperability topic covers the property editors that are available, including additional ones like DatePropertyEditor, to integrate edit boxes with PropertyGrid and how to do so in the new version.

Events Renamed

While we rebuilt the infrastructure, we took some time to clarify and rename events as well.

Modified Property Display Removed

In an effort to maximize performance and simplify the elements and logic in the name and value cell presenatation, we removed the extra logic needed to support modified property display. The related ModifiedPropertyDisplayMode property was removed. It is possible to add back in custom display by altering the property editor templates or even adding an additional column that shows modified states.

Sorting Changes

The way data models at each level are sorted has changed. The AreDefaultSortDescriptionsEnabled and SortDescriptions properties have been removed. Use the SortComparer property instead, which requires an instance of DataModelSortComparer or a derived class. The property can be set to null to disable default sorting.

Filtering Changes

The filtering model has been reworked to an extent and large portions of it moved to the Shared Library. in the ActiproSoftware.Windows.Data.Filtering namespace. The property grid-specific filters (e.g., PropertyModelStringFilter and PropertyModelBooleanFilter) are now in the ActiproSoftware.Windows.Controls.Grids.PropertyData namespace.

Summary Area Changes

The SummaryCanAutoSize property was renamed to CanSummaryAutoSize. The SummaryTransitionDuration and SummaryTransitionSelector properties were removed, since transitions are no longer used in the summary area in an effort to simply the default templates.

List Modifiers Removed

The list modifier features that were used in certain scenarios to help configure property editors in XAML have been removed. There is now a new mechanism for specifying the default property editors in XAML, as described in the Property Editors topic.

Other Changes

These other miscellaneous changes were made to the PropertyGrid class:

Temporary Inclusion of Older PropertyGrid and Interop Legacy Assemblies

We recognize that for the 17.1 version, numerous breaking changes were made and that you might not be able to immediately update to the newer logic. While we fully encourage you to do so since all future updates and maintenance will only be done on this newer Grids codebase, we still offer the older PropertyGrid version along with its related interop assemblies.

These older legacy assemblies are not installed by default. You must check the 'Control Assemblies / Legacy' option in the installer to install them. Once you do so, these PropertyGrid-related assemblies will appear in a 'Legacy' subfolder of the Actipro assembly install folder (see the Deployment topic for the default location), but will not appear in the GAC:

  • ActiproSoftware.PropertyGrid.Legacy.Wpf.dll
  • ActiproSoftware.PropertyGrid.Interop.WinForms.Legacy.Wpf.dll

You will be able to reference the ActiproSoftware.PropertyGrid.Legacy.Wpf.dll assembly in place of the new ActiproSoftware.Grids.Wpf.dll assembly to maintain full backward compatibility with the old version, while you work on upgrading your application to the new version.

See the Licensing topic for info on how to add an entry to the licenses.licx file (updated info added in v17.1).

Do NOT reference both the ActiproSoftware.Grids.Wpf.dll and ActiproSoftware.PropertyGrid.Legacy.Wpf.dll assemblies (or similar for interop assemblies) in the same project, since they have many types/members named the same.

Again, these legacy assemblies will only be included temporarily. We encourage you to upgrade your code to the latest Grids assembly as soon as it is feasible so that you can continue to receive the latest product feature additions and bug fixes.