WPF Controls 2016.1 Released

by Avatar Bill Henning (Actipro)
Thursday, February 4, 2016 at 2:46am

BlogPostBanner.WPF.2016.1.0630

The 2016.1 version of our WPF Controls is now here and it's a whopper.  It contains all of the extensive new feature development work we've done on Docking/MDI over the past several months and have blogged about under the codename Docking/MDI vNext.  It also has 14 new Office-like themes that match the Colorful and White themes found in the various Office suite applications.  Now you can make your own apps look just like Office 2016!  SyntaxEditor adds new Metro light and dark image sets that can be used within IntelliPrompt for a more modern appearance.  Many other minor tweaks and improvements have been made across the product range as well.

See the entire lengthy detailed update list in our announcement post.

Please note that 2016.1 does have several breaking changes to support better API design and features, so be sure to read the "Converting to 2016.1" topic in the documentation that comes with the controls.  It walks through everything in detail.

ProductHeadingGenericDocking

We've been blogging about some of the major new features coming to Docking/MDI vNext, and those are now here, along with many others.  We'll dig in deeper in future blog posts but here's a taste of what's new.

Completely Rebuilt

The Docking/MDI product has completely rebuilt product internals, which are optimized and now support next generation features found in Visual Studio 2015.  All UI control styles/templates have been rebuilt from scratch to be simpler and easier to customize.  All UI now works with all forms of pointer input: mouse, touch, and pen.  We've refactored and centralized focus handling and setting logic. We've refactored magnetism handling.  We rewrote UIA to ensure better compatibility with Coded UI Test.  All samples have been updated/improved, and new samples added to concisely show features.

Even though much of the product internals have been rewritten, most of the public API remains the same as before other than some type member renamings.  The "Converting to 2016.1" topic walks through any breaking changes you encounter.

We also include the "old" 2015.1 variation of Docking/MDI in the WPF Controls download as "ActiproSoftware.Docking.Legacy.dll".  This 2016.1 version of the old assembly can be used while you transition to the newer API.

Subtle Animations

Quick subtle animations have been updated and added throughout the product to give it a more vibrant feel.  Dragging tabs uses smooth animations, dock guides and drop targets pop into place, and auto-hide popups slide in and out.  All of these animations are designed to be fast and pleasing.

DockingDockGuides

AdvancedTabControl

We've created a new AdvancedTabControl control that extends the native TabControl while adding many new features (appearance customization, animation, multiple tab kinds, new tab buttons, etc.), and is used as the primary UI mechanism within the ToolWindowContainer and TabbedMdiContainer templates.  It can be used independently of docking windows too, in your own normal windows.

Desired, Minimum, and Maximum Container Sizes

Layout logic has been updated to try to adhere to optional new desired, minimum, and maximum docked size hints on docking windows when space is available. For instance, you can say that you prefer to not let a tool window's container get smaller than 200px high.  As long as space is available, the layout logic will do its best to adhere to that request.  You can set minimum/maximum size hints the same to suggest a fixed size.

DockedSizeConstraints

Also related to container sizes, when a layout is sized very small, then grows larger again, the original docking window sizes are restored.

Splitters Can Render Above Interop Content

A problem in the old version was the dragged splitter highlights didn't render above interop (WinForms, etc.) content due to WPF's airspace issue.  This scenario now works as expected when interop support is enabled.

Default Locations

Several DockingWindow members have been added to designate preferences for initial dock location when opened, such as with other windows in a group, on a specific side, or at a dynamic location based on an event handler's logic.  Best of all, the properties can all be bound to view-models, allowing you to fully designate initial locations for docking windows purely via MVVM.

Docking Window Tabs

A new optional property lets you specify alternate text to render on tabs, generally shorter than the Title text.  This is useful in scenarios where your tool window titlebar might have contextual information "Error List - 7 Errors" but your tab should only show "Error List".

Flash effects were supported in the old version via an attached behavior found in the samples, but now tinting and flash effects are first-class citizens via easy-to-use properties right on DockingWindow.  Strobe and smoothly animated flash options are both available.

A new property is available for setting a docking window's tab tooltip content.  Tabs can now be set to display on any side of a container, not just top and bottom.  All tabs can now be middle-clicked to close them.

Contextual Content

New properties have been added that allow custom content like buttons or status indicators to be easily injected into title bars and tabs.

ToolWindowTitleBars

Layout Serialization

A new property has been added that can uniquely identify a docking window with any string value, instead of using the Name property as before, which was limited to identifier syntax.  A new properly can prevent a docking window from being included in layout serialization.

Floating Windows

Floating windows now support Aero snap when dragging, meaning you can drag to the top of the screen to maximize the window, etc.  When dragging a tab to float, as long as the docking window can float, it will instantly detach and track in a floating window with the mouse.  A new option allows you to indicate you want to only use float previews instead of live-dragging windows.

When documents are floated, they now enter a full-fidelity secondary MDI area where other documents can be attached, and even tool windows can be docked around.  This is great for use with multiple monitors.  Properties are available for setting the icon and title of these floating windows.

FloatingMdi2

A new property has been added that determines what minimum amount a floating window must be visible to avoid being snapped to screen. Partially-visible floating windows will now snap to this minimum threshold as appropriate.

A new event allows you to later and limit a floating window's initial size.

Tabbed MDI

Tabbed MDI has three modes of tab display (normal, pinned, preview), which are similar to those found in Visual Studio 2015.  New context menu options are availble such as "Close Others", "Close All Documents", "Pin Tab", etc.

TabbedMdiTabKinds

A new tab button can optionally be shown and an event handled in response to add a new document.  This allows for UIs like Google Chrome.

ChromeBrowser

TabbedMdiHost now has a property for setting a DataTemplate that displays when there are no documents open.

Standard MDI

Dock guides now show over standard MDI so that dragged windows can be dropped into it. A context menu is now available when clicking a standard MDI window's icon or right-clicking its title bar.

StandardMdiDocking

An option is available to perform automatic size-to-content when adding a docking window to standard MDI.

All docking window standard MDI layout properties have been refactored and made more straightforward to access.

MVVM

Many improvements in the area of MVVM have been made.  Properties like IsOpen, IsActive, IsSelected, and State are now fully settable and can be bound to view models.  Default locations (see above) can be specified via new properties designed for MVVM compatibility.

MVVM implementation has been improved to be more straightforward since docking windows are now the actual container of their content, instead of being represented in UI as a tab.

In MVVM usage, unregistered windows will now automatically attempt to remove themselves from the appropriate DockSite items source property if a new related option property remains true.

Docking windows can be defined in XAML and have their IsOpen property set (or bound to a view model property) to false to close them on initial dock site load, but leave behind a breadcrumb for future restoration.

Switchers

The standard switcher UI has been improved to a new, more modern user interface that animates on display and supports scrolling when there is overflow.

StandardSwitcher

Multiple new standard switcher properties have been added to allow for full customization of its appearance.

Prism 6.1 Support

The Prism sample has been updated to use Prism 6.1 and includes all source for Prism integration right in the sample instead of in a separate interop assembly.

ProductHeadingGenericThemes

14 New Office 2016-Like Themes

Seven new accent color variations of the MetroLight theme have been added that render similar to the Office 2016 Colorful theme. Seven new accent color variations of the MetroWhite theme have also been added that render similar to the Office 2016 White theme

RibbonWindowAccentedThemes

Now your WPF apps can render exactly like Office 2016 apps.

Updated Metro Theme Title Bar Button Rendering

WindowChrome title bar buttons in Metro themes have been updated to use the larger, crisper Windows 10 style.

TitleBarButtons1

Metro and Luna (XP) Themes Swap Assemblies

In previous versions, Metro themes were shipped in their own assembly that required referencing and registration during app startup.  In 2016.1, the Metro themes are built directly into the Shared library and no longer require registration.  Further, MetroLight will be the default theme on Windows 8.x/10 systems.

Since Windows XP is past its support lifetime, we moved all Luna themes out of the Shared library and into their own separate library, similar to how Metro themes used to be.  That library must be referenced and those themes specifically activated if you wish to continue using them.

The changes mentioned above are minor breaking changes (see our documentation for upgrade steps) but better support newer Windows versions and also reduce the overall size of the Shared library.

ProductHeadingGenericRibbon

Automatic White Monochrome Image Conversion

The new accent color MetroLight themes that render similar to Office 2016 require the use of white monochrome icons in certain locations such as the upper QAT, tab panel, and status bar.  Features have been built into the ribbon button themes to automatically do this conversion for you. 

WhiteMonochromeImages

Simply use standard color Metro-styled icons and they should be automatically converted to pure white when appropriate for you without you needing to do anything.  Note how this has occurred for the QAT buttons in the screenshot to the right.

ProductHeadingGenericSyntaxEditor

New Metro Light and Dark Image Sets

New MetroLight and MetroDark image sets have been added for use with IntelliPrompt. The current set can be selected via the new static CommonImageSourceProvider.DefaultImageSet property. 

SyntaxEditorIconSets

Use the appropriate image set based on the current application theme.  The screenshot above shows the Classic, MetroLight, and MetroDark image sets within a completion list.

TaskLearnMore TaskDownload TaskBuyNow

WPF, Silverlight, and WinRT/XAML v2014.2 Maintenance Releases

by Avatar Bill Henning (Actipro)
Wednesday, December 17, 2014 at 10:55am

20142MaintReleaseBlogPostBanner

New maintenance of the 2014.2 versions of our WPF, Silverlight, and WinRT/XAML controls have been released and are now available for download.

Major new features are described below.  See the announcement posts for the detailed list of enhancements and updates, including many items not listed below:

ProductHeadingGenericEditors

ISO 3166-1 Alpha-3 Codes Added (WPF, WinRT only)

The Country class, which contains ISO country data and is utilized by our CountryComboBox control, now also includes the 3-character alpha code data for each country.

CountryComboBox

This is in addition to the existing data of 2-character alpha code and name.

ProductHeadingGenericPropertyGrid

Handling of Root Objects Improved (WPF only)

We've improved how the PropertyGrid handles properties on the root SelectedObjects that have a custom type converter.

Handling of Immutables Improved (WPF only)

We've also improved support for handling immutable objects and determining how to interact with their properties.

Custom Factory Sample Updated (WPF only)

The Custom Factory sample has been updated to show a property with a non-string type.

PropertyGridCustomFactorySample

This is a great example of showing how to implement a custom data factory and merge properties from various object sources.

ProductHeadingGenericRibbon

Backstage Tab Navigation Improved (WPF only)

We've improved keyboard navigation in the TaskTabControl control, which is generally used within Backstage tabs.

Contextual Tab Layout Refined (WPF only)

The logic for the sizing of contextual tab groups and their tabs always has had some minor issues when resizing the containing window to be thinner.  The issue didn't often manifest itself unless multiple contextual tab groups were displayed.

RibbonContextualTabs

We spent a while tracking these issues down and fixing them so that all layout sizing is now perfect, as seen in the screenshot above.

ProductHeadingGenericSyntaxEditor

Read-Only Regions Added

We've added support for read-only regions of text via the new IReadOnlyRegionTag tag.  This feature has been highly requested by customers, so we're happy to deliver it.

SyntaxEditorReadOnlyRegion

There is a ReadOnlyRegionTag implementation class that supports classification so that read-only regions can be rendered with an alternate background, such as gray in the screenshot above.  A new Read-Only Regions QuickStart that demos the new features is now in the Sample Browser.

Move Selected Lines Up/Down Commands

Another highly-requested set of commands for moving the selected lines up (via Alt+Up) and down (via Alt+Down) have been added.  The SDI Editor demo's menu has been updated to show off the new editor commands.

IntelliPrompt Completion Performance Enhancements

We did a lot of performance profiling related to IntelliPrompt completion lists and we able to make numerous performance enhancements in the areas of item matching and filtering.  These enhancements will really help performance when displaying large completion lists.

Drag and Dropped Text Reselection Option Added (WPF only)

A SyntaxEditor.IsDragDropTextReselectEnabled property has been added that can be set to false to prevent reselection of dropped text.

Data Binding Change Scroll Behavior

Views have been updated so that text changes from a data bound source (such as view model) don't scroll the view back to the first line on each update.

Line Commenter Updated

The line commenter has been updated to improve how line comment and uncomment features affect selection.  The logic that gets activated by the LineBasedLineCommenter.CanCommentEmptyLines property also has been improved.

Bi-Di Text Caret Movement (WPF only)

We've made several improvements to caret movement when editing bi-directional text.

Better Separation of UI/Document Models

All of the event ties between the UI and document models have been changed to use weak events.

.NET Languages Add-on

The ability to resolve references to nested types has been improved.

Web Languages Add-on

A completion item for closing the nearest open ancestor element, if any, has been added.  (WPF only)

SyntaxEditorCloseTagCompletion

Ctrl+Space after an end tag start delimiter will also auto-complete the matching start tag's name.  (WPF only)

We've also improved the editing experience when typing to not affect outlining nodes as much.

ProductHeadingGenericShared

Wave and ZigZag Shapes Added

New primitive shapes have been added that can be used to create some interesting user interface elements in your apps.  The Wave shape renders a wavy line.  The ZigZag shape renders a zig-zag line.

ZigZag2

The Shapes QuickStart has been updated with examples showing usage of the new shapes.

TaskDownload TaskLiveDemo TaskBuyNow

WPF, Silverlight, and WinRT/XAML v2014.1 Released

by Avatar Bill Henning (Actipro)
Wednesday, March 12, 2014 at 10:37am

BlogPostBanner

The 2014.1 versions of our WPF, Silverlight, and WinRT/XAML controls have been released and are now available for download.

Major new features are described below.  See the announcement posts for the detailed list of enhancements and updates, including many items not listed below:

ProductHeadingWPFDocking

Metro themes have been dramatically refined and updated in this version, mostly in the area of Docking/MDI.  Updated UI includes subtle border lines, new auto-hide tab appearance, title bar gripper decorations, and more.

DockingMetro

Metro themes will now not show images on tabs by default, and have changed auto-hide tabs to require a click (instead of hover) to open.  These updates match Visual Studio 2013 behavior.

We've added new events for the auto-hide popup (flyout) that fire when it is opened or closed.  The popup is also now displayed using a faster default animation speed.

When the DockSite.AutoHidePopupOpensOnMouseHover property is false, clicks on auto-hide tabs are required to toggle the auto-hide popup opened and closed.

ProductHeadingWPFPropertyGrid

New built-in property editors for FontFamily, FontStretch, FontStyle, and FontWeight type properties have been added.

PropertyGridFontFamily

ProductHeadingWPFRibbon

New key tip specific theme resources have been added and key tips in Metro themes now render more like Office 2013.

CheckBox-based menu items now are capable of supporting tri-state display.

ProductHeadingGenericSyntaxEditor

Delimiter auto-completion logic for insertion and subsequent scope tracking has been greatly improved.  Delimiter indent provider can now optionally support square braces.

Added a new property that allows SyntaxEditor to measure itself based on text contents.  This works great for smaller documents in both multi-line and single-line modes.

SyntaxEditorAutoSize

Updated single-line mode to support word wrap, which is very useful when combined with the new view line measuring option.

SyntaxEditorSingleLineWrapped

Bookmark indicators now support an IsEnabled state.

LipsumGenerator class added to support generation of "lorem ipsum" placeholder text.

Changed block indent mode to retain whitespace after the caret when Enter is pressed.

.NET Languages Add-on

Numerous improvements to the VB language's handling of identifiers and variable declarations that don't include a type.

Web Languages Add-on

Added IntelliPrompt completion for keywords and symbols to the JavaScript language.

JavaScriptCompletion

Added a new advanced JSON language that can be used to view/edit JSON files, along with a new related QuickStart.

JsonLanguage

Updated JavaScript language to support multi-line strings via backslash continuation.

ProductHeadingWPFThemes

Many improvements to Metro themes (mostly in the Docking/MDI area described above), and improved WindowChrome (and RibbonWindow) rendering when maximized.

ProductHeadingGenericShared

WPF/Silverlight Only

Added the RadialSlider control, which is a circular slider that can be used to input any scalar value.

RadialSliderIntro

Added the RingSlice control, which renders a portion of a ring at designated angles and radius.

RingSliceProgressIndicator

Added the CircularThumb control, which is a thumb gripper with a circular shape and arrow adornment.

Added three samples for new Shared Library controls.

WinRT/XAML Only

Added the AppBarHint control, which is a visual hint to users that app bars exist on a page, and can be tapped to toggle them open. 

AppBarHint

Added a related QuickStart.

ProductHeadingMisc

Sample Browser (WPF/Silverlight only)

Added the ability to toggle description sidebar on some samples.

TaskDownload TaskLiveDemo TaskBuyNow

WPF Controls 2013.2 Released

by Avatar Bill Henning (Actipro)
Wednesday, September 11, 2013 at 12:08pm

BlogPostBanner

Actipro WPF Controls 2013.2 have been released and is now available for download. 

Major new features are described below.  See the announcement post for the detailed list of enhancements and updates.

ProductHeadingWPFCharts

PieChart

A new pie chart control has been added to complement our other bar, line, area, and scatter chart offerings.

Pie

The pie chart supports advanced features like multiple label positioning and display options, legend display, nesting of multiple series, hierarchical data, and more.

DonutChart

Donut

Donut charts have been added as well.  All the same features found in pie charts are found in donut charts, and the hole radius is fully configurable.

Axis Tick Labels for Percentage Stacked Charts

PercentageStackingChart

When using stacking bar or area charts with the percentage axis option, the percentage value labels now display on the axis.

Improved Scatter Chart Samples

ScatterChart

A new and improved scatter sample has been added.

ProductHeadingWPFRibbon

Improved Support for Touch

Ribbon buttons have been improved to support touch-based tapping.  Popups on all ribbon controls have also been updated to be positioned properly on tablet PCs that have the "right handed" option set.

ProductHeadingWPFSyntaxEditor

Web Languages Add-on - Advanced JavaScript Language Implementation

A new advanced JavaScript language implementation has been added to the Web Languages Add-on.

JavaScript

The syntax language features syntax highlighting, parsing, AST building, syntax error reporting, code outlining, delimiter auto-complete, smart indent, text formatting, and code block selection.

See a summary of the new language in this previous blog post.

Delimiter Auto-Completion

Delimiter auto-complete is where the user types a start delimiter and a related end delimiter is auto-inserted after the caret.

DelimiterAutoComplete

In the screenshot above, the { character was typed and the } character was auto-inserted.  This feature has been added to several of the languages in our add-ons.

Delimiter Indent Provider

Curly brace auto-indent can now be easily added to any language, and it has been added to our C# and JavaScript languages in the add-ons.

When the caret is in the middle of a curly brace pair, pressing Enter normally will move the close curly brace to the next line with the caret right in front of it.  If you have an indent provider for your language, the close curly brace will be indented properly however it's still not an ideal situation because you generally want the caret to be on its own line before the close curly brace's line.

CurlyBraceIndent

This scenario is where curly brace auto-indent comes in!  This feature injects a new blank line in between the braces, indents one more level, and positions the caret on that line.

Indentation Guides

Indentation guides are subtle vertical lines that render at each tab stop on lines prior to the first non-whitespace character.  They help visually align the indentation of visible code blocks.

You can see the silver indentation guide lines in the tab stops within this screenshot:

IndentationGuides

Whitespace-only lines are intelligent and render indentation guides based on the tab stop level of surrounding text.

Improved Code Fragments Performance

Lexer and token scanning performance has been improved when using our code fragments feature, which allows you to set header and footer text to surround the document's text for purposes of parsing.

Improved Printing Support

A custom highlighting style registry can now be set explicitly for printouts.  This is ideal if your editor is in a dark theme since then you can use an alternate highlighting style registry designed for light backgrounds on printouts.

Rendering of printouts has also been improved when the syntax highlighting option is off.

.NET Languages Add-on - IntelliPrompt Parameter Info for Array Indexers

Automated parameter info support has been added when the end user edits array indexers.

.NET Languages Add-on - Customizing Completion Items Sample

A new sample is now included that shows how to add and remove items from the C# and VB automated IntelliPrompt completion list.  This ability lets you filter out certain completion list items or add your own custom ones before the list is displayed to the end user.

ProductHeadingWPFThemes

Improved WindowChrome to Not Cover Auto-Hidden Windows Taskbar

In the past versions, WindowChrome (and thus RibbonWindow) would cover up an auto-hidden Windows taskbar when the window was maximized.  This issue has now been resolved, and the auto-hidden taskbar is now visible.

ProductHeadingWPFViews

InertiaScrollViewer

The InertiaScrollViewer control is a drop-in replacement for the native WPF/Silverlight ScrollViewer control but allows you to scroll content using touch, similar to what you're used to on Windows 8 and mobile devices.

It reacts to dragging, flicking, mouse wheel, and normal mouse operation via the scrollbars. You can adjust properties like EasingFunction, VelocityTimeRatio, and VelocityDistanceRatio to fully control how inertia scrolling looks and feels.

InertiaScrollViewer

In the screenshot above, you can see how our main Sample Browser pages have been updated with InertiaScrollViewer, allowing full touch interaction and navigation within them.

TaskDownload TaskLiveDemo TaskBuyNow

WPF Controls 2012.2 Build 571 Released

by Avatar Bill Henning (Actipro) - 2 comments
Thursday, November 15, 2012 at 4:01pm

BlogPostBanner

WPF Studio 2012.2 build 571 has been released and is now available for download. This maintenance release contains some massive new features and updates for the WPF controls.

This build has the following major new features:

  • Docking: Updated the standard switcher to use current theme assets and updated dock guide appearances for the Metro themes.
  • Docking: Updated dock guides, previews, rafting windows, and the switcher to support LayoutTransform detection.
  • Editors: Updated EnumPart to implement ISpinnable and allow up/down arrow keys to change its value.
  • PropertyGrid: Added a new Custom Factory QuickStart that shows how to build a custom data factory.
  • Ribbon: Completely rearchitected RibbonWindow to use the powerful new WindowChrome class for providing its custom chrome.
  • Ribbon: Improved RibbonWindow's Metro themes to support outer glows.
  • Ribbon: Improved RibbonWindow to fully support Aero snap and dock.
  • Ribbon: Updated Backstage to have a more Office 2013-like appearance when in a Metro theme.
  • Ribbon: Updated Backstage so that it covers the RibbonWindow.StatusBar if present.
  • SyntaxEditor: Added a NavigableSymbolSelector.AreRootSymbolsSupported property, that can be set to false to only show the member drop-down.
  • SyntaxEditor: Added new SyntaxEditor.HorizontalScrollBarVisibilty and VerticalScrollBarVisibility properties that can be set to Hidden to hide scrollbars.
  • SyntaxEditor LL(*) Parser Framework: Added a new Grammar.AstLeftAssociativity tree constructor method that can provide left associativity on binary operator expressions.
  • SyntaxEditor .NET Languages Add-on: Improved the parser and resolver.
  • Themes: Added a new Metro White theme, that is similar to the Office 2013 appearance.
  • Themes: Updated WindowChrome to support the rendering of custom chrome for any current theme, not just the Metro themes.
  • Themes: Updated WindowChrome to support Aero glass via its new IsGlassEnabled and GlassThickness properties.
  • Themes: Added the WindowChrome.TitleBarContentTemplate property that allows for injecting custom content next to window title bar caption buttons.

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

TaskDownload TaskLiveDemo TaskBuyNow