Actipro WPF Controls v26.1 delivered broad updates across the entire product suite, including official Visual Studio 2026 and .NET 10 support, nullable reference type annotations, and a new shared Core assembly. Editors gained new RangeSlider, DecimalEditBox, and DecimalPicker controls. While SyntaxEditor received major document and snapshot improvements that preserved original line terminators and improved performance and memory usage. Bars, Docking/MDI, Themes, Shell, and other products also received new features, refinements, and numerous fixes.
Detailed Update List
Bar Codes
- Fixed an encoding error in the Codabar symbology with a couple start/stop characters.
Bars
- Added the BarSeparator.StandaloneToolBarSeparatorMode property that can be set to Spacer to activate spacing capabilities in a standalone toolbar, including the ability to right-align some items.
- Added a BarsMenuFactory that can be used to ensure all Actipro product contextual menus are based on Bars controls.
- Added PopupClosedCommand support to popup-based Bars controls and related MVVM view models, allowing a command to execute after a popup closes.
- Improved control rendering in high contrast themes.
- Improved BarContextMenu's handling of VerticalOffset.
- Improved the add/remove QAT item logic to better handle MVVM scenarios.
- Fixed an issue where the context menu for recent document items would not open correctly when in an application menu.
- Fixed an issue in the MVVM Library where the default template for BarCheckboxViewModel didn't bind StaysOpenOnClick to the related BarMenuItem.
- Fixed an issue where pressing Esc to close a BarComboBox drop-down didn't always function.
- Fixed an issue where deserializing a vertically oriented toolbar before initial layout could leave items visible that did not support vertical orientation.
- Fixed an issue where dockable toolbar layout was not properly invalidated in some scenarios when adding or removing items.
- Fixed an issue where custom controls with BarControlService.IsVerticalLayoutOrientationSupportedProperty set to false would still be displayed.
Charts
- Improved how charts determine element type from the ItemsSource.
- Fixed an issue where bar charts may not render at the correct size in certain scenarios.
Docking
- Added the virtual protected SwitcherBase.GetOrderedDocuments and GetOrderedToolWindows methods to allow for switcher item sort order customization.
- Added TabbedMdiContainer.OpenContextMenu method to open the context menu for the selected window.
- Added TabbedMdiContainer.OpenContextMenuKeyGesture property that can be used to change the default 'Alt+-' gesture for opening the context menu.
- Added TabbedMdiContainer.OpenTabMenu method to open the tab menu if the menu button is visible.
- Added TabbedMdiContainer.OpenTabMenuKeyGesture property that can be used to change the default 'Ctrl+Alt+Down' gesture for opening the tab menu if the menu button is visible.
- Added ToolWindowContainer.CloseButtonKeyGesture property that can be used to change the default 'Shift+Esc' gesture for closing a tool window.
- Added ToolWindowContainer.OpenOptionsMenuKeyGesture property that can be used to change the default 'Alt+-' gesture for opening the options menu.
- Improved positioning, sizing, and scaling of non-hosted popups when used within mixed DPI environments.
- Improved resizing of WindowControl to allow dragging the right, bottom, and left edges outside the bounds of the parent panel.
- Updated the DockingWindow.StandardMdiBounds property to be set in a way that doesn't cause bindings to be lost.
- Updated how dock guide and drop target adornments are removed after use.
- Fixed an issue where the pressing the Escape key would not cancel a drag operation while using hosted floating windows.
Editors
- Added RangeSlider control.
- Added DecimalEditBox and DecimalPicker for working with Decimal value types, including interop support for DataGrid and Grids.
- Added the IsInputFilteringEnabled property which is supported by most edit boxes and can be used to restrict the text that is allowed as input.
- Added support for composite string formats (e.g., "{0:G}") on edit boxes that format numbers.
- Updated SingleEditBox, SinglePicker, and related interop types for DataGrid and Grids to default rounding of 6 decimal places.
- Updated checkboard patterns used behind transparent colors to use new CheckerboardBackgroundPrimaryBrushKey and CheckerboardBackgroundSecondaryBrushKey resources which include appropriate defaults for dark themes.
- Updated date-related edit boxes to use genitive month names when a numeric day part is present.
- Fixed an issue where typing NaN into DoubleEditBox or SingleEditBox while IsNaNAllowed is false would coerce the value to the maximum instead of treating it as invalid input.
- Fixed an issue with all editors where a change in the IsNullAllowed property value would not force the Value property to be re-coerced.
Grids
- Updated PropertyModelBase to implement IPropertyModel interface. Refactored the derived CachedPropertyModelBase class as appropriate and deprecated several declarations on PropertyModelBase that were no longer necessary.
Micro Charts
- Improved how charts determine element type from the ItemsSource.
Navigation
- Updated ZoomContentControl's zoom-to-region drag behavior to use a more visible selection box.
Shell
- Updated ShellListView and ShellTreeListBox to automatically update images when a DPI change is detected. The related NotifyDpiChanged method is no longer necessary and has been deprecated.
- Fixed issues with ShellListView sorting where date/time property values could be ordered incorrectly and equal property values did not use name as an ascending secondary sort.
SyntaxEditor
- Refactored the design of documents and snapshots to track the actual line terminators used in text instead of internally always normalizing line terminators to LF only.
- Updated all methods for text retrieval to return document text with the actual line terminators by default, while still allowing normalization to other line terminator kinds.
- Added properties to ITextSnapshot to return the inferred line terminator for a document snapshot's text and whether all lines uniformly use that same line terminator.
- Added the ITextDocument.NormalizeLineTerminators method to ensure all line terminators in a document are of the same kind, and new edit actions to invoke its logic.
- Added shorter-named values to the LineTerminator enumeration.
- Added the ILineIndicatorTag interface for line-based indicator tags and updated line-based indicator APIs to use that interface.
- Added SyntaxEditor.LineNumberMarginCurrentLineForeground and LineNumberMarginCurrentLineBackground properties.
- Refactored the internal document text storage mechanism to improve performance and memory usage.
- Changed the default value of TextStylePreview.Text from 'AaBbCcXxYyZz' to 'ij = I::oO(0xB81l);'.
- Renamed several types and members to fix a misspelling of 'mergable' to the proper word 'mergeable'.
- Updated the Language Designer to generate more modern code.
- Updated regular expression search patterns to support non-capturing group syntax.
- Updated the search overlay pane to render the Find textbox with a red border when invalid regular expression syntax is detected.
- Updated the default editor context menu to show InputGestureText based on SyntaxEditor.InputBindings if the associated RoutedCommand does not have a KeyBinding.
- Updated the SyntaxLanguage.PlainText property to return a cached instance.
- Moved all regular expression-related types to the regex engine reimplementation in the Core assembly.
- Merged the DisplayItemClassificationTypeProvider class into the BuiltInClassificationTypeProvider class.
- Removed the Text assembly's DisposableObject class in favor of the DisposableObjectBase class in the Core assembly.
- Refined the implementation of several core structures.
- Fixed an issue where dragging an unnormalized selection of text could show the incorrect mouse drop cursor.
.NET Languages Add-on
- Improved IntelliPrompt capabilities within top-level statements.
Shared
- Added several new extension methods for DependencyObject that can be used to interact with the logical tree.
- Added several new extension methods for Visual and Visual3D that can be used to interact with the visual tree.
- Added support for numeric string formats (e.g., "0'*'") for NumericBadge.OverflowStringFormat.
- Added InfoBar.IsSingleLineAllowed property that can be used to force a wrapped layout.
- Added Card.IsResponsiveToPointerOver and IsResponsiveToPointerPressed properties that provide more discrete control over making a Card appear actionable.
- Refactored licensing infrastructure and moved types to a new ActiproSoftware.Licensing namespace.
- Created a new simpler licensing dialog that displays when necessary, guiding the user through next steps.
- Moved the ObservableObjectBase class to the Core assembly in the ActiproSoftware namespace and improved APIs, including adding a SetValue method.
- Moved the DisposableObjectBase class to the Core assembly in the ActiproSoftware namespace and made the Dispose method abstract.
- Moved a few extension method classes to the Core assembly in the ActiproSoftware.Extensions namespace and improved APIs. The RoundMode, DateTimeFormatPattern, and DayOfWeekFormatPattern enumerations used by the extension methods were moved to the ActiproSoftware namespace.
- Moved all types in the ActiproSoftware.Products.Logging namespace to the Core assembly in the ActiproSoftware.Logging namespace.
- Moved the WeakEventListener class to the Core assembly in the ActiproSoftware namespace.
- Updated DateRange.OverlapsWith logic to be inclusive of the start and end dates.
- Updated some brush comparison logic.
Themes
- Refactored WindowChrome internals to reduce complexity and utilize native window borders, which also fixes a prior issue of jittery resizing when using the left or top borders.
- Updated list controls to use a lower contrast background for selected items, allowing for better display of various foreground content.
Core
- Added a new Core assembly that is referenced by all Actipro assemblies and contains various fundamental classes used across our product line.
- Applications that use Actipro assembly references instead of NuGet packages must now also reference the Core assembly.
Legacy
- Legacy Editors and PropertyGrid assemblies were removed from the installer. These assemblies were included starting in v17.1 for compatibility with older APIs.
- Details for the removal of these assemblies are in the 'Converting to v26.1' documentation topic.
All
- Added official support for Visual Studio 2026.
- Added .NET assembly targets for .NET 10 and removed targets for .NET 6.
- Added nullable reference type (NRT) annotations for all libraries and samples except some legacy/deprecated products.
- Added MenuFactory that is used by all Actipro products which can be used to customize or replace built-in contextual menus.
- Moved all assembly image and cursor resources to a root path level in each assembly.
- Renamed the ActiproSoftware.Products namespace to ActiproSoftware.Properties.
- Details for any breaking changes are in the 'Converting to v26.1' documentation topic.
- Removed legacy XAML designer assemblies that are no longer supported by Visual Studio 2022 or higher.
- To ensure a consistent API, all classes that implement INotifyPropertyChanged that do not derive from ObservableObjectBase have deprecated the NotifyPropertyChanged method in favor of new OnPropertyChanged and SetProperty methods that match ObservableObjectBase.
About WPF Controls
WPF Studio / WPF Essentials Licensing
You can purchase our WPF controls individually if you wish however you have the option to purchase all of them in the WPF Studio bundle. Purchasing the bundle saves more than 65% over purchasing all the WPF controls individually.
The WPF Essentials bundle saves more than 40% over purchasing its bundled controls separately.
That's some incredible savings!
WPF Studio Benefits
All WPF 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.
In addition, if you own a WPF Studio license, you are automatically eligible to receive free licenses for any new WPF control products added to WPF Studio that come out within your year period. This benefit does not apply to WPF Essentials customers.
Evaluation Download
You can download an evaluation of all our WPF controls from this page:
http://www.actiprosoftware.com/download/evaluations
Upgrade to WPF Studio
Contact our sales team for information on discounted pricing for upgrading from one of our older WPF control product licenses to a license for WPF Studio, WPF Essentials, or a new version of a WPF control product.
Free Upgrades
If you own an older WPF Studio version or one of its products 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.
[Modified 3 hours ago]
Actipro Software Support