The Actipro Blog

All the latest UI control development news from Actipro

Building a Better SyntaxEditor Text Rendering Engine

BlogPostBanner-SyntaxEditor-DevNotes

The past several weeks, we've been prototyping a new core text rendering engine for future use with SyntaxEditor (and possibly other products) that can be used across multiple platforms.  This text rendering API is the same across all supported platforms, which currently are WPF, UWP, and WinForms.  The implementation of that common API is platform-specific behind the scenes since each UI platform supports rendering text in very different ways.

SyntaxEditor would be a consumer of that text rendering API.  By using that text rendering API that is common across platforms, we could consolidate all the SyntaxEditor logic related to text formatting, rendering, and hit testing to be the same.

Platform Benefits

First the UWP version's text rendering implementation in this new engine is lightning fast, and would yield a massive rendering speed increase when merged into the UWP SyntaxEditor, compared to our current way of rendering text in the UWP SyntaxEditor.  It also would be more culture-sensitive with better logic on caret movement, right-to-left text, etc.

The WinForms version's implementation is also fast and compared to the current WinForms SyntaxEditor's way of rendering text, would gain culture sensitivity for caret movement, right-to-left text, etc.  Having a common text rendering API with other platforms would also be a big step in moving the WinForms SyntaxEditor down a path towards using the same general SyntaxEditor API as the other newer UI platforms use.  A future goal is to make this happen so that changes we make to features, add-ons, etc. can flow freely between all the SyntaxEditor platforms.

Finally the WPF version's text rendering is already very fast and culture-sensitive, but there are several logic enhancements we're making to improve speed when rendering long lines.

What's Next

We're still working on everything, but so far, tests in separate projects are very promising for the future of this text rendering API experiment.

Once things are finalized a bit more, we may plug it into one of the platforms like UWP to begin actual usage testing with SyntaxEditor.  This process will take some time since we will have to pull out all the plumbing for the current SyntaxEditor text rendering implementation, and adjust things to work with this new API.  We will give some updates once we make progress on that end.

Filed under: Actipro, In development

WPF, UWP, and Silverlight Controls 2017.2 Released

BlogPostBanner.17.2

We're happy to announce that the 2017.2 versions of our WPF, Universal Windows, and Silverlight controls have been released.  These versions include some new controls, new features, and a lot of minor updates and bug fixes.

See all the details on the 2017.2 releases in the various announcement posts:

SyntaxEditor

Intra-Line Adornments

Full support for intra-line adornments is now included.  These allow whitespace to be reserved above and/or below view lines, and adornments rendered in that space.

CodeLens

A first new sample shows implementation of a Visual Studio-like Code Lens adornment with info display and hyperlink. 

PeekDefinition

A second sample shows a Visual Studio-like Peek Definition (embedded editor) display.  This is accomplished using a second SyntaxEditor within an adornment of the outer SyntaxEditor.

Vertical Scrolling

Vertical scrolling logic has been refactored to better handle view lines of various sizes.

Code Outlining

A couple new code outlining commands have been added: apply default outlining expansion and expand all outlining.

.NET Languages Add-on Roslyn Extensions

A new optional assembly is available that has Roslyn extensions for loading IBinaryAssembly instances that can be referenced by a project assembly, instead of using normal .NET reflection.

.NET Languages Add-on IntelliPrompt

IntelliPrompt completion is now available for object creation expression initializer member names.

ObjectInit

Docking/MDI (WPF/UWP)

Floating Windows

A new property can be data-bound to your VM to float or restore a docking window.  The default location request event allows for specifying that a docking window should open in a floating dock host.  Docking windows that were closed while floating now support more precise restoration later.  Dragging standalone floating docking windows by their tabs now has a better experience.

Contextual Indicators

The read-only contextual indicator for documents now uses a separate display mechanism from the custom contextual indicators, allowing both to show at the same time.

Editors (WPF/UWP)

AutoCompleteBox

A new AutoCompleteBox control has been added that allows text entry and provides suggestions for auto-completion.

AutoCompleteBox

This kind of control is ideal for use in search query and quick launch kinds of scenarios.

DateEditBox

DateEditBoxOpened

Clicking a date on the popup calendar now closes the popup.

Grids (WPF/UWP)

Drag/Drop

The TreeListBox item adapter has been updated with a method that fires when hovering over an item during a drag, allowing you to determine whether it should be expanded.

TreeListBoxDragDrop

New adapter methods have also been added that are called immediately before and after a drag, allowing for custom adornments to be displayed while dragging.

Shared Library (WPF/UWP)

AdvancedTextBlock

A new AdvancedTextBlock control has been added that can show a tooltip when overflowed and can highlight spans of text based on captured text ranges (i.e. filter match results).

TaskDownload TaskBuyNow

Actipro Blog 2017 Q2 Posting Summary

BlogSummaryBlogPostBanner

What We Accomplished

In this quarter, we continued enhancing the 2017.1 versions of our WPF Controls, Universal Windows Controls, and Silverlight Controls.  Docking/MDI gained many minor feature improvements.  Editors added better support for custom formats in numeric edit boxes, default values, and had other tweaks. Grids improved tree filtering, empty content display, column header taps, focus tracking, and added/updated several samples.  SyntaxEditor's .NET Languages Add-on added C# 6 and VB 14 syntax support, improved resolver logic for partial classes and base types, and more.  Numerous other updates were made across these and other products.

What’s Coming Next

We currently are working on finishing up the feature set for the 2017.2 versions.  Docking/MDI has a lot of updates related to floating windows, Editors adds a new AutoCompleteBox control, SyntaxEditor adds intra-line adornments (like the VS editor's Code Lens or Peek Definition features) and scrolling logic is refined, and the .NET Languages Add-on is getting an option to use Roslyn to load reflection information for referenced assemblies.

Most information on these new controls and features will be published soon.

We hope to roll v2017.2 out in the next several weeks.

Blog Post List

Control Product Releases

Tags:
Filed under: Actipro, Blog Summary

WPF, UWP, and Silverlight v2017.1 Maintenance Releases

BlogPostBanner-2017.1-Maint

Our v2017.1 WPF, Universal Windows, and Silverlight controls have all been updated with new maintenance releases that are now ready for download.  It is highly recommended that you get these new builds since many products received numerous minor enhancements and bug fixes. 

See the announcement posts for the detailed list of enhancements and updates:

TaskDownload TaskBuyNow

WPF Controls v2017.1 Maintenance Release

WPF17.1.0651.BlogPostBanner

The WPF Controls 2017.1 build 651 maintenance release is now available.  This build has a large number of updates and new features for various WPF control products (Docking/MDI, Editors, Grids, Ribbon, SyntaxEditor, Shared Library), and includes bug fixes for all issues that have been found since the original 2017.1 release. 

In addition, the SyntaxEditor .NET Languages Add-on now supports C# 6 and VB 14 syntax, with full automated IntelliPrompt.  The screenshot below shows automated IntelliPrompt working properly with a null-conditional operator.

SyntaxEditorNullConditional

The rather large list of full update details are contained in this forum thread.

TaskDownload TaskBuyNow

Filed under: Actipro, WPF

Actipro Blog 2017 Q1 Posting Summary

BlogSummaryBlogPostBanner

What We Accomplished

In this quarter, we wrapped up all of the massive changes and improvements we've been working on for our new Grids and updated Editors products and rolled them out in the 2017.1 versions of our WPF Controls and Universal Windows Controls

The new Grids product contains a reimagined PropertyGrid control that is much faster and easier to use than our older WPF PropertyGrid control.  Grids also contains new highly-requested TreeListBox and TreeListView controls that are very fast and can reproduce control experiences like those seen in the Visual Studio Solution Explorer and more.  All of these new controls are available for WPF and UWP.

Our UWP Editors product was improved with numerous new controls and enhancements.  The entire product was also ported to WPF so that there is cross platform compatibility.  We did this since the new Editors are much more lightweight and in the future, any changes we make to one platform will easily roll into the other's codebase.

What’s Coming Next

Now that the new Grids product is officially out in the wild, we've been collecting feedback from customers and have been working on many enhancements centered around that feedback.  The first 2017.1 maintenance release is close to ready for release and has a number of those enhancements in place.  The maintenance release is also adding updates to our .NET Languages Add-on (WPF, UWP, Silverlight versions) to support C# 6 and VB 14 syntax, with full automated IntelliPrompt working for the new language features too.

We have started work on other SyntaxEditor updates, namely implementing intra-line adornment support.  This would allow you to add features like the VS editor's Code Lens or Peek Definition to SyntaxEditor.  We've started a public thread for these features and are beginning to look for beta testers.  Please write our support address if you'd like to help test this and ensure that our implementation meets your needs.

Beyond that, we plan on continuing adding minor enhancements to Grids, SyntaxEditor, Editors, and Docking/MDI over the coming weeks.

Blog Post List

Tips and a Special Offer

Control Product Releases

Tags:
Filed under: Actipro, Blog Summary

WPF, UWP, and Silverlight Controls v2017.1 Released

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

WPF Controls v2016.1 Maintenance Release

WPF16.1.636.BlogPostBanner

With the 2017.1 version of our WPF Controls about ready for launch, we wanted to release one more 2016.1 maintenance release of the controls.  This maintenance release has many minor updates and bug fixes.

Some notable new features include improving the speed of SyntaxEditor text formatters for numerous languages and allowing the Ribbon Backstage "close" button to be hidden, which is applicable for app startup usage scenarios.  The full update details are contained in this forum thread.

Look for v2017.1 to roll out in the next few days!

TaskDownload TaskBuyNow

Tags:
Filed under: Actipro, WPF

Celebrating VS 2017 - A Free Universal Windows Controls Offer

VS2017LaunchBlogPostBanner

VS2017 Launch Partner LogoWe'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.

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!

Tags:

WPF Controls 2017.1 Beta Testers Requested

PostBannerWPFControlsDevNotes

Hey everyone, we've been working very diligently on the 2017.1 version of our WPF controls for the past several months and a public beta is almost ready.  We'd love as many customers as possible to participate in the beta.  First, let's give an overview of what's new in the 2017.1 version.

Editors Reimagined

In the 2017.1 version, we reimplemented all Editors controls to be faster and more lightweight in terms of elements/bindings, and to use a common codebase with the Universal Windows Editors product.  The new designs are better optimized for use in large quantities such as within data grids or property grids.

Every new edit box control has more fine-grained control over the step values.  Now a native TextBox control is used for input, which allows for more free-form editing, IME input, and better UIA support.

BrushEditBoxOpened

New and improved drop-down pickers have been designed for each edit box.  The pickers are optimized for mouse, pen, and touch-based entry.  The screenshot above shows the BrushEditBox and the new BrushPicker drop-down control.  Altering any edit box's drop-down is simply a matter of providing an alternate Style for its picker control.

TimeEditBoxOpened

New edit boxes have been added for the Byte, Int16, and Single numeric types, along with dedicated date-only (DateEditBox) and time-only (TimeEditBox seen above) variations of DateTimeEditBox.

Tree Controls Added

Our customers have requested custom tree controls from us for a while now and we delivered in this version.  We now offer a new TreeListBox control that is a single column tree similar to a native TreeView but optimized for MVVM usage, virtualization, and speed.  It supports nearly all of the advanced features you'll find in a tree control like the Visual Studio Solution Explorer tree.

TreeListViewColumnReordering

We also offer a new TreeListView control that is built upon the TreeListBox control but displays multiple columns similar to a ListView.  Each column supports its own distinct user interface via data templates.

Both of these controls are packaged in a new Grids product.

PropertyGrid Reimagined

While the PropertyGrid control found in our 2016.1 and earlier versions was very feature-rich, its performance sometimes left much to be desired and customization via property editors wasn't very straightforward.

PropertyGridIntro

In the 2017.1 version, PropertyGrid has been rewritten from scratch and constructed around the foundation provided by the new TreeListBox and TreeListView controls.  It's now lightning fast and loads complex objects (like the properties of itself) almost instantly.  A lot of this is due to simplification of the internal object model, use of virtualization techniques, and fewer overall UI elements.  You'll definitely notice the speed increase.

The core object model used to track properties and categories has been improved and creating custom property editors is much more straightforward now.

The new PropertyGrid is part of the Grids product as well.

Beta Testers Wanted

If you'd like to help us beta test the product, please write our support address and let us know your existing 2016.1 license information.  We will notify you as soon as the public beta is ready and will send you a 2017.1 license if your subscription is still active. 

The code for the beta is near complete and should be pretty stable.  We have a full array of samples and documentation has been completely updated, including conversion notes.

We also will be chatting about the beta in our Slack channels so please join if you have Slack.

Tags: , ,