WPF, UWP, and Silverlight v2016.1 Maintenance Releases

by Avatar Bill Henning (Actipro)
Monday, August 15, 2016 at 7:12pm


Very large maintenance releases of our v2016.1 WPF, Universal Windows, and Silverlight controls have been released and are now available for download.


We've been blogging about our new TreeListBox and TreeListView controls for a little while now.  They have been in private alpha testing and now we have placed the alpha test in a new public Grids assembly that has shipped in this WPF and UWP maintenance release.


TreeListBox is a TreeView-like control but has many advanced features like those found in the Visual Studio Solution Explorer.  See this blog post for some details on the feature list.


TreeListView inherits TreeListBox and includes all of the tree hierarchy features found in it.  It also displays each row similar to a ListView, columns and all!  This blog post summarizes the features found in this control.

With this public alpha release of the controls, you are able to start using them and can provide us with feedback.  We'd love to hear from you, whether it be via our ticket system or Slack.  Our plan is to finalize them for the 2017.1 version, but they should be pretty stable for usage now.  Anyone with a WPF/UWP Studio or PropertyGrid license should be able to use them immediately under your existing 2016.1 license.

Going forward, we have already made major progress on rewriting our PropertyGrid control and basing it on TreeListView.  So far, performance tests are showing that it's loading large property trees almost instantly.  We'll blog more on this in the upcoming weeks.


There were a lot of tweaks and bug fixes in this build for the Docking/MDI product.  We recommend you grab the latest if you use Docking/MDI. 

There were numerous improvements too, including some more major ones like:

  • A new option to prevent a tool window from being dragged to a floating MDI area. 
  • A new option to prevent auto-selection of tabs when there is a system drag over them.
  • System drags will only auto-select tabs following a brief delay when you hover over the tab.
  • More programmatic docking methods.
  • Improved "active" appearances when focus moves to other focus scopes.
  • Improved focus tracking, especially with HwndHost-based interop controls.
  • Improved handling of MVVM with linked dock sites, even allowing the view models to be automatically moved to the target dock site.


Line modification mark tracking logic has been completely rewritten.  It now works much better and even introduces new orange marks that track "reverted" changes, similar to how the Visual Studio editor does.


We added the ability for a programmatically created text change to merge into previous text change on the undo stack.  This allows you to chain additional text changes onto previous ones and have them be undoable as a single unit.

We added a new property that can be set to false to only allow backspacing over a single character when the document's AutoConvertTabsToSpaces is true.

The PasteDragDrop event is now also raised drag over events so that the drag effects can be manually altered.

The ITextChange.CustomData property is now settable so it can be updated after the text change was created as needed.

SyntaxEditor Web Languages Add-on


A text formatter for the JSON language has been implemented that beautifies the JSON data.

Shared Library


We added the DynamicImage control, which is a drop-in replacement for Image that will auto-grayscale the image content when the control is disabled. Going along with this, we updated ImageConverter to return a DynamicImage instance instead of Image.  Our toolbar, menu, and Ribbon control themes have been updated to use DynamicImage so that you get grayscale effects on images out-of-the-box.  Note how the cut, copy, and undo buttons are all grayscale when disabled in the screenshot above.

If you encounter a 'Could not find a part of the path' to bitmap image source error after upgrading to this version, specify the absolute path to the image source using pack syntax as described in the DynamicImage documentation instead of using a relative path.

We moved ImageToMonochromeConverter from our Ribbon assembly to Shared and renamed it to ImageSourceContentConverter.  Along the way, it was updated to work on vector GeometryDrawings too.  We added an attached ImageSourceContentConverter.CanConvertToMonochrome property, which can be set on portions of a DrawingImage that shouldn't be converted to monochrome, such as areas that display a selected color.  We also added a ImageSourceContentConverter.Mode property that sets whether to convert to grayscale (default) or monochrome.


All products received numerous other minor enhancements and bug fixes.  See the announcement posts for the detailed list of enhancements and updates:

TaskDownload TaskBuyNow

TreeListView - A Multi-Column Variant of TreeListBox

by Avatar Bill Henning (Actipro)
Thursday, July 14, 2016 at 6:49pm


In the last blog post on our TreeListBox control development, we announced that the TreeListBox control was ready for closed alpha testing.  TreeListBox is a new control that has much of the same functionality as the tree control found in the Visual Studio Solution Explorer.

In today's post, I'd like to announce a new TreeListView control that is now also ready for alpha testing.  The TreeListView control is a multi-column variant of the TreeListBox control that renders similar to a standard ListView but has all the tree and advanced features found in TreeListBox.


The animation above shows several of the features found in this new control such as node expansion, column resizing, column reordering, column header context menus, and more.

Feature Progress

Thus far these TreeListView features have been completed:

  • All features found in TreeListBox.
  • Templates, template selectors, or text property bindings used to specify custom content for each cell.
  • Column width can be a specific pixel value, auto (size to header, cells, or both), or star-sized.
  • Optional minimum and maximum widths for column auto/star-sizing modes.
  • Columns can optionally be resized, reordered, and have visibility toggled by the end user.
  • Frozen columns that don't scroll horizontally.
  • Set which column renders the indentation and expander buttons.
  • Column headers have a built-in context menu, and the headers themselves can be hidden.
  • Size columns to fit contents.
  • Optional grid line display.
  • Numerous events for column resizing, reordering, visibility changes, and header menu requests.


If you would like to start working with either of the controls and provide us with feedback, please write our support address or chat with us on Slack to sign up for testing.  Now is the time to contribute your additional feature ideas and report bugs.  Anyone who has a WPF Studio license is fully licensed to use the control in their apps.

TaskWideContactUs TaskWideChatWithUs

Actipro Blog 2016 Q2 Posting Summary

by Avatar Bill Henning (Actipro)
Friday, July 1, 2016 at 3:05pm


What We Accomplished

In this quarter, we published new maintenance releases of all our control products and released the 2016.1 WinForms Controls.  In terms of development, we've been working on a new Grids product (for WPF and UWP) that will initially consist of a TreeListBox, similar to the tree control found in the Visual Studio Solution Explorer.  That control is already in alpha testing to some customers.  While that testing is ongoing, we have made great progress on a TreeListView control, which is a multi-column variant of the TreeListBox control.  This control features everything you find in a standard ListView, along with all the features of TreeListBox, and additional ones like column reordering, frozen columns, etc.  We'll post more on this new control very soon.

What’s Coming Next

Development of the TreeListView control is currently the primary focus.  We hope to wrap that up for alpha testing in the next two or three weeks.  After that we have some other plans for derived controls that are based on the foundation provided by TreeListBox and TreeListView that we will be getting into.

Blog Post List

Control Product Development

Control Product Releases

WinForms Controls 2016.1 Released

by Avatar Bill Henning (Actipro)
Wednesday, June 1, 2016 at 8:00pm


A new version of our Windows Forms controls has been released.  This version includes several large new features along with numerous minor bug fixes and updates.  First, these are some of the major new features…

Floating Documents


When a new DockManager property is set to true, documents can be floated to their own window.  This allows them to be moved to and maximized on a second monitor.

Document Layout Serialization

We've always had layout serialization for tool windows but now tabbed document windows can have their layouts serialized as well.

C# Parser Updated to Support C# 5.0 Syntax

The C# parser in the WinForms .NET Languages Add-on has been updated to support the parsing of C# 5.0 syntax.

See the announcement post for the detailed list of other enhancements and updates.

TaskDownload TaskBuyNow

TreeListBox - New Features and Ready for Alpha Testing

by Avatar Bill Henning (Actipro) - 1 comment
Monday, May 23, 2016 at 3:52pm


In the last blog post on our TreeListBox control development, we talked about new features like async loading and inline editing that were added.  In today's post, we'll talk about some more new features and we're also announcing that the alpha test of this control is now ready.

If you would like to start working with the control and provide us with feedback, please write our support address or chat with us on Slack to sign up for testing.  Now is the time to contribute your additional feature ideas and report bugs.  Anyone who has a WPF Studio license is fully licensed to use the control in their apps.

New Features

Since our new post, we've continued to enhance the control and add new features.  First, you now can optionally display the root item in the control.  When you choose not to do so (the default), the root node's children will be the top-level items.

There is now more control over expandability and when children are queried.

A robust drag and drop system supports dragging to external controls, dragging and dropping on the same control, and dropping from external controls.  You have full control over the visual feedback that is provided and what happens when a drop executes.

The control supports data virtualization when virtualized lists of child items are used.  With data virtualization, it's possible to support paged retrieval of items as they are requested for display.

A couple new options determine how far items are indented based on their depth.

Feature Progress

Thus far these features have been completed ( marks new features since the last post):

  • Fully customize the appearance of each node.
  • UI virtualization, allowing for hundreds of thousands of nodes to be loaded into a tree very quickly.
  • No scrollbar jumpiness as seen in other virtualized tree controls when scrolling vertically.
  • Use your own custom data models as the source for the tree, with no dependencies on UI or our interfaces. An adapter class is used (and can be fully customized to fit your model) to communicate between the UI and the model for things like expansion state, getting children, etc.
  • The adapter can be coded with bindings in XAML (convenient, yet can be slow in very large trees) or via method overrides (slightly more work but lightning fast).
  • Optionally show the root item in the control.
  • Fine-grained control over expandability and children query triggers.
  • Optional async loading with busy indicator display.
  • Events for expansion.
  • Events for selection.
  • Single or multi-selection, with Ctrl and Shift-based selection options.
  • Filter selection such as only allowing sibling nodes to be multi-selected, or nodes of the same depth.
  • All common tree hotkeys supported including special ones for expanding and collapsing entire branches.
  • Select or ensure nodes are visible by path.
  • Double-click and Return key default action handling.
  • Optional checkboxes within the data templates.
  • Intelligent text searching so when you start typing while the control has focus, it will auto-focus the item that matches the typed text.
  • Inline editing via F2 and single-click on a selected item.
  • Per-item context menus that can be constructed dynamically via an event.
  • Drag items to external controls, drop data from external controls, or drag/drop items within the control itself.
  • Dragged items can highlight above, on, and below drop areas for each item.
  • Single and multiple item dragging is supported.
  • Optional data virtualization optimization when using virtualized collections.
  • Indentation of top-level and other nodes can be set independently.


The TreeListBox control is now ready for alpha testing.  Please contact us via our ticket system or in Slack to sign up for testing and send in your feedback.  We will continue to refine the API based on your feedback before a future final release.

TaskWideContactUs TaskWideChatWithUs