The Actipro Blog

All the latest UI control development news from Actipro

Actipro WPF Studio v3.5.0425 is live!

We've done a lot of blogging in the past couple of weeks on new WPF controls that were being prepared for the next maintenance release of WPF Studio v3.5.  Well, I'm pleased to announce that all those controls are now live with today's latest build 425.

New Controls and Components

A slew of new controls and components are included in this build.  Here is a brief list of the major new ones, with links to the previous blog posts that describe them:

Improved Documentation

Our already-thorough documentation has been further enhanced, with a lot of new topics. 

Many New Samples

We've continued to add many new samples to the Sample Browser with this build.  In fact, there are 16 new samples added in this maintenance release!

How to Download?

If you already own WPF Studio v3.5, just go to your Organization Purchases page and download the new maintenance release from there.  If you don't own WPF Studio v3.5, you can get it from the Download page.

First Look: Breadcrumb for WPF

The last major control that will be added to our Navigation for WPF product in the upcoming WPF Studio v3.5 maintenance release is the Actipro Breadcrumb control.  The Breadcrumb concept was introduced in Windows Vista to replace the old style of address bar. 

Breadcrumb
The Breadcrumb control

The Breadcrumb control is essentially a condensed version of a TreeView.  Instead of showing a full hierarchy, only the selected path down the tree is displayed.  We've put a lot of work into this control to make sure it has all the Windows Vista features along with some additional ones.

Drop-Down Selection

When the drop-down arrow next to an item is clicked, a popup menu displays containing the child nodes.  Simply click on a child node to select it.

Overflow

When the width of the Breadcrumb is not large enough to support the display of all the items, a chevron button appears at the left side of the Breadcrumb.  Clicking the button shows a menu containing access to all the hidden parent nodes.

BCOverflow

The Breadcrumb with an overflow menu displayed... the top portion is the stack of overflowed items, and the bottom portion is the list of items for the root minimized Desktop node 

Auto-Minimize

Breadcrumb can be configured to auto-hide any number of nodes at the top of the hierarchy when child nodes are selected.  This behavior defaults to hiding only the root node.  For example, in a file system when you select something below the Desktop, the Desktop node minimizes but is fully accessible from a drop-down button that is displayed in its place.  This allows you to hide nodes that aren't commonly used but still keep them accessible.

Tail Items

Tail items are a really neat feature that is unique to Actipro Breadcrumb.  Not even Vista's Breadcrumb has it.  By default, the last item displayed is the selected item.  However you can configure the Breadcrumb to display any number of tail items. 

BCProgressiveFade

The Breadcrumb showing a progressive fade feature for tail items 

As an example, say you drill down to a leaf node in your tree.  Then you click a parent node item to select the parent.  If tail items are enabled, the previously-selected leaf node will still be visible although with a faded appearance.  This allows end users to quickly jump back to a previously-selected child node.

Edit Mode

By clicking on the icon at the left of the Breadcrumb, you can jump into "edit" mode.  In this mode, the node items disappear and are replaced by a TextBox where you can enter the full path to the desired node directly. 

BCEditMode

The Breadcrumb showing an active edit mode

You have total control over how the text path is converted to a node path.

Action Buttons

Custom action buttons may be added to the right side of the control.  These can be anything you wish, however for proper usage you will want to have their purpose be related to the nodes represented in the Breadcrumb.

Progress Bar

Just like Vista's Breadcrumb, Actipro's BreadCrumb fully supports a progress bar embedded in the background of the control.  You can optionally use this to reflect loading progress when a new node is selected.  It uses our AnimatedProgressBar control that was described in a previous blog post

 BCProgressBar

The Breadcrumb showing a progress bar in its background, indicating to the end user that an operation is in progress

Features include animated smooth progress transitions, multiple states (green, yellow, red), and more.

Themes

Breadcrumb supports multiple built-in themes, everything from Windows Classic to Vista.

We are currently working on the samples and documentation for Breadcrumb, and expect to have it released in the next several days.

SyntaxEditor Generic Method IntelliPrompt Enhancements

The latest build 274 of SyntaxEditor's .NET Language Add-on includes several improvements for generic method support.

First, if you call a generic method (defined as T GenMethod<T>()) passing the generic parameter type like (GenMethod<int>().), the member list that is displayed will be for int.

GenericMethods

Demonstrates how the generic extension method ElementAt is applied to a string array twice and SyntaxEditor correctly recognizes the final return value is a char

Second, generic methods on extension methods now resolve types properly as well.  This is especially useful with Linq as you can see in the screenshot above.  Above, ElementAt is a generic extension method defined on Linq's Enumerable class.  The first time it is applied, the string type is returned and the second time it is applied, the char type is returned.

We still have a little more work to do with generic methods but these are some great steps forward!

First Look: PopupButton for WPF

Another smaller new control that is ready for the upcoming WPF Studio v3.5 maintenance release is PopupButton.

PopupButton

A PopupButton with its resizable popup displayed

PopupButton allows you to easily define a button that can display a popup.  The popup can show any WPF content or can optionally display a ContextMenu.  The popup content and context menus can be defined in XAML or dynamically in code.

There are several display modes for the button.  It can show a split mode where the button is clickable separately from the popup portion.  The split can be removed so that the entire button displays the popup when clicked.  In this mode, you also have an option of hiding the content area and just showing an arrow indicator.  The other option is the turn off the popup portion and make it behave like a normal button.

Another great option is the ability to have the button render "flat" until the mouse moves over it, at which point the background and borders appear.

Numerous themes are included with the control.

In our next "first look" post, we will talk about a major new control for the maintenance release that uses PopupButton.

Filed under: Actipro, In development, WPF, XAML

First Look: Aero Wizards for WPF

We're getting very close to having the next big maintenance release for WPF Studio v3.5 ready.  One of the larger new controls that is part of Wizard is the new AeroWizard control.  AeroWizard inherits our normal Wizard control but provides a custom UI that mimics the style of wizards found in Windows Vista.

AeroWizard

An AeroWizard control that shows how easy it is to create Vista-like wizards  

Note that all of the glass rendering and title bar area is handled for you.  We have a special AeroWizardWindow class that is a Window intended to contain an AeroWizard.  You can interact with the expanded title bar region just like you would in the true non-client title bar area of the window, meaning double-click to toggle maximization, click and drag to move the window, right click to display the system menu, etc.

In Aero wizards, the Back button appears in the title bar to keep consistency with the other Vista explorer windows and task dialogs.

Since AeroWizard inherits Wizard, it supports all the many features you've come to love in the core Wizard product, including command-base page switching, animated page transitions, and much more.

Want to get started building Aero wizards fast?  The new build will include a VS 2008 item template that gets you going in seconds with a fully-functional Aero wizard template window.

Command Buttons

No Aero wizard is complete without the special buttons called command buttons that sometimes allow for choices within the main page area.  We've fully implemented command buttons for you, and they even have the smooth animation when you move the mouse over them or click on them.

We're very excited to offer Aero wizards in WPF Studio with the upcoming release.

WPF and Aero glass causes ClearType to fall back to grayscale antialiasing

We had a customer write us the other day mentioning that ClearType was turning off when using our RibbonWindow class in Windows Vista with Aero enabled and was falling back to grayscale antialiasing. 

After a lot of debugging and searching, we found that the root of the problem was the use of Vista's Aero glass in the client area of a Window in WPF.  Basically if glass is disabled or not available (like in Windows XP), everything is fine and renders properly using ClearType.  However if you implement your WPF Window such that glass can enter the client area (like in our RibbonWindow or previously-posted GlassWindow that is soon to be released), ClearType will disable and grayscale antialiasing will be used instead.

We traced the line that causes the issue down to this one, which is necessary for any WPF Window to properly support Aero glass in its client area:

// Ensure the background of the composition target is transparent
HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor = Colors.Transparent;

Basically if the Colors.Transparent is set to the Window's composition target, ClearType becomes disabled.  If you don't set this however, then glass is not able to enter the client area of the Window.

Here is a great post by Dax Pandhi on how to enable Aero glass in WPF Windows.

In there you can see how the line of code above is used to notify Win32 to use a transparent background for the client area of the window.

After some more searching on Google, we found this post too which explains the issue a bit more:

Give me back my ClearType

That post shows some screenshots of the issue and is very helpful for telling what things will cause ClearType to disable.

I've posted a question about this issue in the Microsoft WPF forum and hopefully Microsoft will do something about this in the future.

First Look: GlassWindow for WPF

Another new control in the upcoming Actipro WPF Studio v3.5 maintenance release is GlassWindow.

It is a normal Window however adds some additional property that allow you to extend Aero glass effects in Vista into the client area of the window.  It's very simple to use, you just ensure IsGlassEnabled is true and set the thickness of the client area glass that you want.

GlassWindow

A GlassWindow with Aero glass extended into the client area of the window

As an added feature, you can set the glass thickness to -1 to make the entire background of the window be glass.

First Look: AnimatedProgressBar for WPF Shared Library

The next control I'd like to introduce for the upcoming large WPF Studio 3.5 maintenance release is the AnimatedProgressBar control.

AnimatedProgressBar

The AnimatedProgressBar control in a window that mimics a file copy status window

The AnimatedProgressBar control is essentially like a standard native WPF ProgressBar except that it has numerous improvements:

  1. The AnimatedProgressBar supports multiple built-in themes and fully implements Actipro's themes management framework, allowing you to change themes on the fly at run-time.
  2. AnimatedProgressBar supports three operation modes... the normal mode displays progress like normal, but warning (yellow-colored progress) and error (red-colored progress) modes can be entered during times when input is needed by the end user.  This makes it clearer when user input is required in the middle of long operations.
  3. AnimatedProgressBar uses smooth animation to slide its indicator to the desired target value.  A normal progressbar "jumps" directly to new values.  The animated slide creates a more visually appealing effect.
  4. An option to use a continuous indicator (instead of the default segmented one) in non-Aero themes.
Filed under: Actipro, In development, WPF, XAML

First Look: Ribbon TextBox Hint Text

In preparation for a pretty large update to WPF Studio v3.5 that will most likely be out next week, we will be making several blog posts showing some of the new features and controls that will be available in the update.  We'll start small and get into the better features as we go.

First, we've added hint text support to Ribbon textboxes and comboboxes.  Hint text is a faded out blurb of text that appears when a textbox or combobox is empty.  It usually gives some simple instruction for related to the data that should be input to the control, or a description of that data that should be entered.

The hint text starts out somewhat opaque when there is no content in the control.  If the control gains focus, the hint text becomes slightly more transparent.  If content is entered, the hint text disappears completely.

HintText

The same TextBox in three hint text states... the top TextBox doesn't have focus or content, the middle TextBox has focus but no content, and the bottom TextBox has focus and content

Transitions between the various hint text states use smooth animations for visual appeal.

This feature can be used for Ribbon textboxes and comboboxes both inside and outside of the Ribbon.

Keep an eye on our blog as we get into some of the larger new features in forthcoming posts.

Tags: ,
Filed under: Actipro, In development, WPF, XAML

New SyntaxEditor .NET Languages Add-on IntelliPrompt Features

 

The latest build of the .NET Languages Add-on released today includes some great new features related to automated IntelliPrompt.

Extension Methods

This build adds IntelliPrompt support for extension methods, a new feature found in C# 3.0 and VB 9.0. 

Extension methods allow you to define new methods on existing types without having to sub-class or recompile the original type.  This means you can add functionality directly to types for which you don't have source code.

 ExtensionMethodsSource

The member list displayed for an Int32 parameter, showing how source-defined extension methods are applied

In the sample above, note the extension method ToStringExt is defined on the static ExtMethodProvider class.  In the TestMethod, we press "." to show a member list for its Int32 parameter val and that locates the ToStringExt method, including it in the available members for the Int32 parameter.

Extension methods can be defined in compiled assemblies or in code as above.  The most common use of extension methods is with LINQ.

ExtensionMethodsLinq

A member list displayed for a string array variable, showing how extension methods from LINQ's classes have been added to the normal members that appear on an array

Delegates

The latest build adds IntelliPrompt support for delegates.

Delegate

The parameter info tip displayed for a delegate invocation

EditorBrowsableAttribute Support

Support for recognition of the EditorBrowsable attribute is now available.

 EditorBrowsable

Note that the member list shows an entry for _AVisibleClass but not for _AnInvisibleClass since that class has EditorBrowsable(Never) applied to it

When the EditorBrowsable(EditorBrowsableState.Never) attribute is applied to a type or member, that type or member will no longer appear in member lists.

The attribute is recognized for both assembly-defined and source-defined types and members.