WPF, UWP, and Silverlight Controls 2017.2 Released

by Avatar Bill Henning (Actipro)
Monday, August 28, 2017 at 5:22pm

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

How to Animate a WPF Standard MDI Window into Place

by Avatar Bill Henning (Actipro)
Thursday, January 5, 2017 at 1:52pm

PostBannerWPFControlsTipsAndTricks[4]

Our WPF Docking/MDI control product allows you easily add docking tool windows and a MDI (multiple document interface) to your app, one that mimics Visual Studio.  We have two built-in MDI options: tabbed and standard.  Tabbed is similar to the style that current Visual Studio versions use.  However some customers still prefer to use the classic windowed style of MDI that we call "standard MDI".

There is no built-in standard MDI mechanism in WPF, but we provide a complete implementation in Docking/MDI with all the functionality like cascading and tiling that you would expect.

We just had a customer ask how they could animate a standard MDI window into place when it's first loaded. 

We did a quick experiment in our 2016.1 version using a simple implicit Style and it worked great.  Here's the results:

StandardMDIPopIn_thumb[1]

The animation we defined quickly fades in the window and "pops" it into place.  This animation matches the animations we use elsewhere in the product such as when dock guides appear while dragging docking windows around.

Here's the code that you can place in your app's Resources to get the animation above to appear:

<Style TargetType="docking:StandardMdiWindowControl">
<Setter Property="Opacity" Value="0" />
<Setter Property="RenderTransformOrigin" Value="0.5,0.5" />
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="0.8" ScaleY="0.8" />
</Setter.Value>
</Setter>
<Style.Triggers>
<EventTrigger RoutedEvent="docking:StandardMdiWindowControl.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.2" />

<DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)" To="1" Duration="0:0:0.2">
<DoubleAnimation.EasingFunction>
<BackEase EasingMode="EaseOut" />
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" To="1" Duration="0:0:0.2">
<DoubleAnimation.EasingFunction>
<BackEase EasingMode="EaseOut" />
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>

Download our WPF Controls and give it a try!

TaskDownload TaskBuyNow

WPF Controls v2016.1 Maintenance Release

by Avatar Bill Henning (Actipro)
Thursday, December 15, 2016 at 1:15am

BlogPostBanner-WPF16.1.0635

Today we published a WPF Controls maintenance release v2016.1 build 635.  The updates are described in detail in this post.  It is highly recommended that you download this maintenance release since it fixes several issues that popped up with the Docking/MDI product and makes several other minor enhancements as well.

We are now at a stage where we are about to start prepping our codebases for the upcoming 2017.1 version.  Over the past few months, we've been working on an array of new and revised controls for that version, and will begin merging all that in over the coming weeks.  Look for a beta testing request announcement in very early 2017. 

Everyone, please have a wonderful holiday season and happy new year!

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

WPF, UWP, and Silverlight v2016.1 Maintenance Releases

by Avatar Bill Henning (Actipro)
Friday, May 13, 2016 at 7:19pm

Maintenance16.1.BlogPostBanner

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

Docking/MDI for WPF and UWP has several new options that give you more control over UI appearance.  Tab text on tabbed MDI tabs will now trim long text with ellipses in the middle, instead of the end, allowing for filenames to be more readable.

SyntaxEditor's completion and parameter info providers in all language add-ons now allow you to intercept OnSessionOpening, even when no items were pre-populated, so that you can add your own custom items/info.  Cut, copy, paste, drag, and drop all now support the block and full line flags that are compatible with Visual Studio.  The Python Language Add-on added a text range property to all type and function definitions, allowing you to implement features like go to definition easier.

The Shared Library added a new RingSpinner control that is an animated ring where the two ring segment ends chase each other around the circle.  It's great for display while performing a lengthy operation.

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

TaskDownload TaskBuyNow