Universal Windows Controls v22.1 Released

Announcements Forum

Posted 2 years ago by Actipro Software Support - Cleveland, OH, USA

A major new version of the Actipro Universal Windows controls is now available.

Detailed Update List


  • Refactored internal data processing logic to support more data types and throw InvalidOperationException for unsupported types.
  • Fixed an issue with XYDataPointCollectionView throwing DivideByZeroException when initialized with zero for optimal aggregation count.


  • Improved how focus is applied to TreeListBox controls when a docking window is activated.
  • Improved an exception message for a particular layout deserialization scenario.


  • Added a PartEditBoxCommitTriggers.LostFocus option so that commit on focus loss is now optional, which is a breaking change since it previously always occurred. The Default and All options have been updated to include LostFocus so they operate like before. If you use any other custom options, you must also now include the LostFocus option to retain the same behavior as before.
  • Renamed the PartEditBoxCommitTriggers.None option to Manual. The previous None option implicitly committed on focus loss. Use the new LostFocus option instead of None to retain the same behavior as before.
  • Updated the numeric edit boxes to support input of Full-width and Arabic-Indic digits.


  • Added the TreeListBox.FilterApplied event that is raised after the current filtering state has been applied to all of the control's items, generally occurring when DataFilter is changed, or filtering is enabled or disabled.
  • Added a TreeListBoxItemAdapter.GetAbsolutePath method that can be implemented to improve performance in large trees when searching for a tree node.
  • Added the TreeListBoxItemAdapter.GetDefaultActionCommand method and updated the sample TreeNodeModel to properly support default action commands.
  • Improved TreeListBox item focus tracking in response to selection changes.
  • Improved TreeListBox when filtering with DataFilterResult.IncludedWithDescendants to only ensure items included by the filter are made visible via expansion, instead of all descendants.
  • Updated TreeListBox logic for handling selection change cancellations.
  • Fixed a bug where the TreeListBox.InvalidateChildren method didn't properly reinitialize the node's children in a certain scenario.
  • Fixed a bug where the PropertyGrid.ChildPropertyRemoved event wasn't being raised appropriately.

Micro Charts

  • Refactored internal data processing logic to support more data types and throw InvalidOperationException for unsupported types.
  • Fixed an issue with MicroXYDataPointCollectionView throwing DivideByZeroException when initialized with zero for optimal aggregation count.


  • Added new Column Guides feature with Column Guides QuickStart to demonstrate the functionality.
  • Added new non-generic interfaces ITaggerBase (implemented by ITagger<T>) and ITagAggregatorBase (implemented by ITagAggregator<T>) for a type-safe way of working with these types when the type of ITag is not relevant.
  • Added ITaggerBase.NotifyTagAggregatorAttached and ITaggerBase.NotifyTagAggregatorDetached which are called when an instance of TagAggregatorBase<T> attaches to or detaches from a tagger.
  • Added CanKeepCaretVisible property to ScrollDownAction and ScrollUpAction to control if the caret should optionally be moved to remain visible after scrolling. Corresponding overloads added to IEditorScrollViewer.ScrollDown and ScrollUp methods.
  • Added various IQuickInfoSession.Placement* properties that return values if the placement-oriented Open method was used to open the session. Updated the IntelliPrompt Quick Info QuickStart to demonstrate repositioning the QuickInfoSession.PlacementRectangle property for these kinds of sessions as the view is scrolled.
  • Improved the vertical scrollbar behavior when dealing with collapsed regions.
  • Improved the positioning logic for IntelliPrompt popups.
  • Improved the logic for the EditorSnapshotChangedEventArgs.TypedText property to remove whitespace that might have been added to pad a typed character for proper virtual space positioning.
  • Improved the logic for adding manual outlining nodes.
  • Improved HighlightingStyleRegistry.Import to match classification types by key and to ignore colors defined as '0x01000000'.
  • Improved NavigableSymbolSelector to update its ComboBox selections quicker for simple selection changes in the attached SyntaxEditor.
  • Improved DelimiterAutoCompleter to function in more scenarios.
  • Updated drag-and-drop to scroll horizontally when the drop caret is near the edges of the control.
  • Updated drag-and-drop to remove possible unnecessary scrolling following a drop.
  • Updated Single-Line Mode QuickStart to include a formula example with alternate style for nested parenthesis.
  • Updated TagAggregatorBase<T> so it no longer calls Dispose when detaching from taggers which implement IDisposable. Taggers can use the new ITaggerBase.NotifyTagAggregatorDetached method to determine the most appropriate time to dispose of the tagger.
  • Updated SyntaxEditor.IsDocumentReadOnly to a read-write property and the corresponding dependency property SyntaxEditor.IsDocumentReadOnlyProperty now supports two-way bindings.
  • Updated the SyntaxEditor.SuspendCaretBlinking and ResumeCaretBlinking methods to support caret display when focus is not in the editor.
  • Updated the IntelliPrompt repositioning logic to better handle when a session is closed due to being scrolled out of view.
  • Updated the IntelliPrompt repositioning logic to ensure it remains horizontally within the text area.
  • Updated the MoveSelectedLinesDownAction logic to prevent unexpected results when at the document end.
  • Updated outlining logic to ensure that a collapsed outlining node expands if its end is removed and it becomes an open node.
  • Fixed a bug where setting HighlightingStyle.BorderColor to null in styles with a border could trigger an exception when rendering.
  • Fixed a bug where a code snippet with an $end$ defined immediately after a field may not position the caret properly when Enter was pressed after editing the field.
  • Fixed a bug where exported RTF and HTML didn't account for a customized plain text foreground.
  • Fixed a bug where calling IEditorView.InsertSurroundingText from witin a SyntaxEditor.DocumentTextChanged event handler could result in an incorrect final selection.
  • Fixed a bug where typing in a block selection after a collapsed outlining node could lead to an incorrect selection range.
  • Fixed a bug where a collapsed region without a related intra-text spacer at document end could throw an exception.
  • Fixed a bug where the selection wasn't always correct after an indent for a block selection that included virtual space.
  • Fixed a bug where a block selection that begins with no characters selected in the first line wouldn't copy the text properly.
  • Fixed a bug where pressing Enter with a block selection at the document end could incorrectly delete characters.
  • Fixed a bug where deleting a collapsed outlining node that had its quick info open could throw an exception.
  • Fixed an issue where IntelliPrompt completion tab filters might not work properly in a certain scenario.
  • Fixed an issue where intra-line adornments with a bottom margin may not display properly on the last line of a document.
  • Fixed an issue where collapsed outlining nodes could get out of sync in a certain scenario.
.NET Languages Add-on
  • Updated the C# parser grammar to support C# 8.0 syntax.
  • Updated the C# outliner to create outlining nodes for code-level constructs such as block statements. This feature can be disabled by setting the CSharpOutliner.CanOutlineCodeLevelConstructs property to false.
  • Updated the SourceFileLocation property to be populated on all ITypeMemberDefinition objects from source, and added it to IParameterDefinition and IVariableDefinition objects loaded from source. This allows for Go To Definition functionality to be implemented for all kinds of resolved objects.
  • Updated the DocumentationProvider.ToString method to return the raw XML documentation comment text.
  • Updated CSharpContextFactory and VBContextFactory to better handle target expression resolution when positioned immediately after a significant token.
  • Improved the VBTextFormatter logic.
  • Improved IntelliPrompt completion for VB With statements.
  • Fixed a bug where IntelliPrompt completion displayed incorrect results in VB array initializers.
  • Fixed an issue where C# completion wasn't correct within a new object creation expression.
  • Fixed an issue where an invalid VB module declaration could lead to an exception in a certain scenario.
  • Fixed an issue where a VB With statement could lead to an exception in a certain scenario.
Web Languages Add-on
  • Updated the JavaScript parser grammar to support ECMAScript 2021 (12th Edition) syntax.
  • Updated JsonSyntaxLanguage with a new constructor overload for whether the lexer supports JavaScript style comments, as in Microsoft's JSONC variant.
  • Updated the XML context factory to return an AST node for the target element, if the AST is in sync with the tokens that generated the target element.
Python Language Add-on
  • Updated the parser grammar to support Python v3.9.5 syntax.
  • Updated the resolver to support namespace packages.
  • Removed support for Python v2.x syntax, which is well past end of life.
  • Fixed an issue where an aliased dotted import name might not resolve correctly.


  • Improved how DelegateCommand's ICommand interface implementation handles a null command parameter argument when the generic type argument is non-nullable.
  • Improved the UIColor.Grayscale method logic.
  • Fixed a bug where DataFilterGroup didn't always handle IncludedWithDescendants results properly.

About Universal Windows Controls


All Universal Windows control licenses automatically include a free subscription for a year of free upgrades to any new versions that are released. At the end of the year, you may renew your license for another year to keep the free upgrade benefits active.

You can purchase our Universal Windows controls individually if you wish however you have the option to purchase all of them in the Universal Windows Studio bundle. Purchasing the bundle saves 50% over purchasing all the controls individually. In addition, if you own a Universal Windows Studio license, you are automatically eligible to receive free licenses for any new control products added to Universal Windows Studio that come out within your year subscription period.

Free Evaluation Download

You can download a free evaluation of all our Universal Windows controls from this page:


Free Upgrades

If you own an older Universal Windows controls version and would like to upgrade to this latest version, please click the request a free upgrade link on your organization account page's 'Purchases and Licenses' tab. The link will appear there if your upgrade eligibility is active.

Actipro Software Support