WPF, UWP, and Silverlight Controls v2017.1 Released

by Avatar Bill Henning (Actipro)
Wednesday, March 22, 2017 at 4:50pm

2017.1.BlogPostBanner

The 2017.1 versions of our WPF Controls, Universal Windows Controls, and Silverlight Controls were recently released, with the WPF and UWP controls getting some enormous updates in these versions.

The primary focus of the 2017.1 version in WPF and UWP was to add an improved PropertyGrid control and tree controls (TreeListBox and TreeListView) in our new Grids product, and to update Editors to be more modern/lightweight, and share a codebase between the two platforms.  Another focus was on maximizing the performance of all the controls.  The new PropertyGrid for instance shows a massive speed increase over the older WPF v2016.1 PropertyGrid.

PropertyGrid

See the entire lengthy detailed update list in these announcement posts:

If you want to discuss the new controls added in 2017.1 or have suggestions for additional features, please join our #UIControls channel in our Slack team.  It's free and you can chat with us and other customers.

Please note that the v2017.1 WPF Controls have PropertyGrid, Editors, and licensing breaking changes to support better API design and features, so be sure to read the "Converting to 2017.1" topic in the documentation that comes with the controls.  It walks through everything in detail.

ProductHeadingGenericGrids

Grids is a new product added to the WPF and Universal Windows Controls in v2017.1.  It features three primary controls:  TreeListBox, TreeListView, and PropertyGrid.

TreeListBox

TreeListBox is a single-column control that renders a tree structure.  It is designed to mimic the features found in the Visual Studio Solution Explorer.  You have full control over the appearance of each node, and can easily wire up any tree data model for rendering via the use of our adapter pattern.

TreeListBox

The UI tree is virtualized for optimal performance.  Unlike the standard WPF TreeView, TreeListBox is a single ItemsControl that is far less resource intensive and doesn't experience odd vertical scroll jumpiness.

TreeListBoxAsyncLoading

You have full control over whether nodes are expandable, when they load children (and with optional use of async loading with a busy indicator as seen above), and selection modes (single/multiple).  A powerful filtering mechanism is included that allows you to add type-to-filter support.  F2 can initiate inline editing of node text.  Drag and drop can be enabled and you determine what is dragged/dropped.  This just scratches the surface, and there are many other features included.

TreeListView

The TreeListView control builds on top of the foundation provided by TreeListBox and adds multiple columns with an optional header, similar to a standard WPF ListView.

TreeListViewColumns

Columns can be sized using several algorithms, resized/reordered by the end user, or certain columns frozen such that they don't scroll horizontally.  Grid lines can be optionally displayed.

PropertyGrid

The PropertyGrid control is based on TreeListView and renders a grid of all the properties of one or more objects and their values. Properties can be displayed by category, alphabetically, or using a custom sort.

PropertyGridBrushEditBoxOpen

A PropertyGrid control was available in older versions of our WPF Controls, but we rewrote much of the internals for v2017.1 and optimized the object model to focus on maximizing speed and ease of use.  The new PropertyGrid can load large complex objects almost instantly.  It's simpler than ever to customize how properties are edited via the use of property editor DataTemplates.  You have full control over which properties are presented and how.

ProductHeadingGenericEditors

The 2017.1 version ported the Universal Windows Editors back to WPF so that they now share a codebase.  This decision was made because the newer Editors designs are much more lightweight in terms of UI elements used in each control, and the number of bindings involved.  This improves UI performance when using many Editors controls in grids like PropertyGrid.

You'll still find many great editing features such as the ability to use arrow keys when typing in edit boxes to increment or decrement part values.

DoubleEditBoxOpenedCalculator

Each edit box now has an optional dedicated picker control that is used in the drop-down, like the calculator shown above.  The picker can be easily styled if a custom appearance is needed.

DateTimeEditBoxOpened

In addition to porting the UWP Editors to WPF, we also added a number of new editor controls.  Editors in both platforms feature specialized edit boxes and pickers for these .NET types:  Brush, Byte (WPF only), Color, CornerRadius, Date, DateTime, Double, Enum, Guid, Int16, Int32, Int32Rect (WPF only), Int64, Point, Rect, Single, Size, Thickness, Time, TimeSpan, and Vector (WPF only).

Rating

Editors also has these other various miscellaneous controls:  Calculator, CountryComboBox, CurrencyComboBox, EnumListBox, GradientStopSlider, HsbColorPicker, MonthCalendar, RadialHuePicker, Rating, SaturationBrightnessPicker, and Spinner.

ProductHeadingGenericShared

The licensing mechanism was updated for the WPF Controls in v2017.1 to be simpler.  Regardless of which WPF products you've licensed from us, your apps will only need a single line in the licenses.licx file going forward.  Please read the Converting to 2017.1 topic in the documentation for details on these updates.

Enjoy the new version!

TaskDownload TaskBuyNow

Celebrating VS 2017 - A Free Universal Windows Controls Offer

by Avatar Bill Henning (Actipro)
Tuesday, March 7, 2017 at 9:42pm

VS2017LaunchBlogPostBanner

We're very excited to be a Visual Studio 2017 launch partner. To celebrate, we want to help you get started building some great Windows Store apps with our Universal Windows UI control products.

VS2017 Launch Partner Logo

Our user interface control products offer features you won't find anywhere else.  All of our more recent control products have been designed with codebases that are shared as much as possible between WPF and Universal Windows.  This makes it easy to share code and technical know-how when you have Actipro controls in applications using each platform.

Free UWP Controls with Purchase of Related WPF Controls Licenses

UniversalControlsSampleBrowser

Here's the offer:

Buy licenses for qualifying Actipro WPF UI control products and get the related UWP control product licenses for free, including free subscriptions!

As an example, this means that if you would like to buy our WPF SyntaxEditor control with its .NET Languages Add-on, follow the steps on the Offer Details page and we'll add the Universal Windows versions to your account with the same subscription period as your related WPF subscription.  All for free!

This Offer is for Our Existing Customers Too!

We don't want to leave our valued existing customers out in the cold.  If you have an active WPF controls subscription for a qualifying product, you also can follow the steps on the Offer Details page to receive your free controls too!

Our 2017.1 Versions Are Launching Soon

We are doing final testing on the 2017.1 versions of our products now and they will be launching soon.  Our 2017.1 WPF controls have new Editors that are based on the work we did when building the UWP Editors.  We've implemented many new features, made them more lightweight, and added new editors too.  The 2017.1 version also officially launches our new Grids product, which includes a rewritten PropertyGrid control that is much faster than the old version and easier to use and customize.  Grids also has brand new tree controls, including a TreeListBox and TreeListView.  Best of all, these controls will be launching on UWP in our 2017.1 release of the UWP Controls too.

Limited Time Offer

This offer is only good through July 7, 2017, so act fast by following the directions on our Offer Details page.  Please contact our sales team if you have any questions!

WPF, UWP, and Silverlight v2016.1 Maintenance Releases

by Avatar Bill Henning (Actipro) - 2 comments
Friday, November 18, 2016 at 3:33pm

Maintenance16.1.BlogPostBanner

Very large maintenance releases of our v2016.1 WPF, Universal Windows, and Silverlight controls have been released and are now available for download.  While there are an enormous number of minor updates and bug fixes made across the various UI control product range, the following lists the major updates that were made.

Visual Studio 2017 Support

These Actipro maintenance releases update our UI controls to support the Visual Studio 2017 RC version that was released on Wednesday.  Congratulations to the Microsoft teams involved in delivering the next major version of our favorite IDE!

ProductHeadingGenericDocking

A new event has been added that is raised when dragging docking windows over a drop target.  Handle this event to specify that certain dock guides should be hidden that normally would be visible.

DockingDockGuides

A new property is available to prevent floating dock hosts that contain MDI from showing in the Windows taskbar.  (WPF only)

ProductHeadingUWPEditors

A new Calculator control has been added that provides a familiar calculator interface to interactively calculate numeric values.  A new PickerKind property is available on DoubleEditBox and Int32EditBox to allow for optional usage of the calculator in the popup picker.

DoubleEditBoxOpenedCalculator   TimeSpanEditBoxOpened

New edit box and picker controls have been added for the Int16, Int64, Single, and TimeSpan types.

A new property has been added that determines the scenarios (e.g Enter key press, etc.) in which a value commits when editing in an edit box.

A new property has been added that determines the wrapping behavior used when spinning past a minimum or maximum value in the active part in an edit box.

Added the DoubleEditBox.IsNaNAllowed, IsNegativeInfinityAllowed, and IsPositiveInfinityAllowed properties, which allow entry of those related values.

DoubleEditBoxNaN

Improved Int32EditBox to support hexadecimal formats.

Improved GuidEditBox to support multiple formats.

GuidEditBox

Added UI automation peers for numerous controls.

ProductHeadingWPFEditors

The MaskedTextBox control added a default context menu and the gradient brush editor added a Remove Stop button.

BrushEditBox

ProductHeadingGenericGrids

The TreeListBox control and its derivatives added a powerful data filtering mechanism that uses string, boolean, and predicate-based logic to filter items.

TreeListBoxFiltering

A new sample that demonstrates filtering was also added.

ProductHeadingGenericSyntaxEditor

Added the ZoomLevelIncrement property that controls the mouse wheel zoom step amount.

Added several UI automation peers for internal SyntaxEditor components.

CompletionListCentered

Improved the IntelliPrompt completion list to try and keep the item matched by typing scrolled to the middle.

ProductHeadingGenericShared

Added a UI automation peer for the RadialSlider control.

RadialSlider

Updated the RadialSlider control to support more keyboard shortcuts.

Summary

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

TaskDownload TaskBuyNow

SyntaxEditor Line Modification Mark Enhancements

by Avatar Bill Henning (Actipro) - 4 comments
Thursday, August 25, 2016 at 6:57pm

PostBannerSyntaxEditorDevNotes

The latest maintenance releases of our v2016.1 WPF, Universal Windows, and Silverlight controls had some major work done on SyntaxEditor's line modification marks feature.  In fact, its internal logic was completely rewritten and improved.

Overview

Line modification marks use colored bars in the selection margin to tell the end user whether changes have occurred on the line, and whether those changes have been saved.

This animation shows this feature in action:

SyntaxEditorLineModificationMarks

New changes will turn the marks yellow to reflect that those lines are “dirty” (unsaved).  If you then "save" the document (which I do above after typing on two lines), the marks turn green to indicate they are now saved.

While the yellow and green marks were present in older versions, there were some bugs that could occur with their tracking over the course of multiple text changes.  Those bugs have been fixed in this latest maintenance release.

In addition we also have added orange marks, that occur when you undo past the save point.  They show anything that is different from what was saved but is not different from the document when it was originally opened.

Summary

These great new features match exactly with what is in Visual Studio and are wonderful for end users.  Grab the latest 2016.1 builds to add them to your own apps!

TaskDownload TaskBuyNow

WPF, UWP, and Silverlight v2016.1 Maintenance Releases

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

Maintenance16.1.BlogPostBanner

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

Grids

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

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.

TreeListViewColumnReordering

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.

Docking/MDI

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.

SyntaxEditor

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.

SyntaxEditorLineModificationMarks

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

JsonTextFormatting

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

Shared Library

GrayscaleImages

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.

Summary

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

TaskDownload TaskBuyNow