Subscribe (RSS)

Quick Links

About Actipro

Actipro Software has been creating .NET user interface control products for Windows Forms since its inception. More recently, Actipro has become a pioneer in the .NET 3.0 WPF control development arena.

WPF Studio 2009.2 gives the gift of major new features for the holidays

by Bill Henning (Actipro) December 16, 2009 at 17:06

WPF Studio 2009.2 and just been released and is available for download now.  This new major version has some enormous updates in it, the larger of which we’ll describe below.

See our related forum announcement for exact details on what updates were made in each product.

ProductDocking32

Docking/MDI for WPF

Floating document functionality like in Visual Studio 2010

Document windows in 2009.2 support the ability to be dragged out of the MDI area and floated.  This allows end users to move documents to secondary monitors.  This has been a very highly-requested feature by our end users.  The functionality matches what is found in Visual Studio 2010.

FloatingDocs

All floating windows can now be maximized, and a custom chrome is used to render floating window titlebars and borders.

This previous blog post talks about the new features in more detail.

ProductEditors32

Editors for WPF

AnalogClock control added

A new AnalogClock control is now included that can render a clock with hour, minute, and optional second hands. 

AnalogClock

The hands can be dragged to set new time values.

EnumListBox control added

EnumListBox is a new control that makes it extremely easy to pick between enumeration values using checkboxes or radio buttons.  It even can render alternate display text based on Description attributes.

EnumEditBox control added

The new EnumEditBox control is an editor implementation that has a dropdown with an EnumListBox.  When the dropdown is closed, the selected enumeration value is displayed.

EnumEditBox

DateTimeEditBox updated to display clock in dropdown

The popular DateTimeEditBox control has been updated to display a time entry section on its dropdown when a date/time or time-only value are edited in it.

DateTimeEditBox

The DateTimeEditBox will automatically toggle whether a month calendar and/or clock are available in the dropdown based on the date/time format used for the control.

ProductNavigation32

Navigation for WPF

ZoomContentControl added

Need a control that provides an intuitive interface for navigating around large content?  The new ZoomContentControl has what you need.  It is extremely configurable, and allows for easy zooming/panning and other operations.

ZoomContentControl

This sort of control is perfect for browsing around content such as large pictures, maps, reports, designers, and more.

Custom buttons (like the Open Image button above) or other controls can be easily embedded in the UI.

ProductRibbon32

Ribbon for WPF

In-ribbon galleries add support for multiple display rows

You asked for it and we delivered.  In-ribbon galleries now support more than one display row if the height of the items can fit more than one row.

GalleryRows

The rows even animate up and down as you scroll between them.

ProductSyntaxEditor32

SyntaxEditor for WPF

Tagging mechanism added

Tagging is an exciting new feature area that allows any text range in a document to be “tagged” with custom data.  This data could be anything from custom classifications to something that indicates a squiggle line should be drawn when the text is rendered.

Adornments mechanism added

The new adornments features allow any custom UI elements to be inserted into the text area surface.  This is one of the most exciting feature areas added to SyntaxEditor since it opens up the doors for providing amazing visualization customizations to end users.  Our favorite demo of adornments is the sample that shows how to make animated smoke puff near the caret as you type.

SmokeText 

See this previous post that talks about a number of new samples that show off ideas for adornment usage.

Squiggle line support added

A built-in adornment layer supports squiggle line rendering. 

SquiggleLines

Now you can “tag” document text ranges that have syntax errors and the squiggles will show up automatically in SyntaxEditor.

New event sinks and improved language service design

We’ve added a number of new event sinks that let your syntax language classes process when new documents or views are attached to or detached from the language.  A number of language services have been opened up so that more than one instance of a service type can be registered.  This means you could have two completion provider services in place, etc.

More documentation

We’ve added a lot more documentation, especially in the area of language creation.  Our language creation walk-through topic now also gives a table of common syntax language features and links to the steps/services needed to implement them.

ProductShared32

All controls

Visual Studio 2010 and Expression Blend 3 designer support added

Version 2009.2 adds designer support for Visual Studio 2010 and Expression Blend 3.

New samples added

We’ve added a number of new QuickStarts for the various products to demo controls and features.  SyntaxEditor alone is up to about 55 full source samples.

Upgrade Notes

Since 2009.2 is a major new version, 2009.1 customers will need new license keys to use the 2009.2 version. 

If you are an existing customer and have an active subscription, you can log into your Actipro account and there should be a link near the top of your Organization Purchases page allowing you to request a free upgrade to 2009.2.

Alternatively if your subscription has expired, you can order a renewal from our purchasing pages.

If you are using individual WPF products but would like to switch to either the WPF Essentials bundle or WPF Studio suite, e-mail our sales team and we’ll be happy to discuss discounted upgrade options.

WPF Studio 2009.1 build 506 released with many major updates

by Bill Henning (Actipro) October 20, 2009 at 09:42

Build 506 of WPF Studio 2009.1 is available for download now.  It is one of the larger WPF Studio maintenance releases we’ve made.  Let me do a quick review of some of the major exciting new features.  In addition to this list, there are a lot of other minor enhancements made.

See our related forum announcement for exact details on what updates were made in each product.

ProductDocking32

Docking/MDI for WPF

Custom content in docking window tabs

DockingTabContent

Any content can now be placed in docking window tabs.  This screenshot shows an animated progress indicator in one tab and a drop-down button in the other tab.

Resize slots in a SplitContainer

ProgrammaticSizing

New features have been added making it possible for you to resize the slots of a SplitContainer however you like.  This screenshot shows a split container with an even distribution of space for its slots.

Cascade and tile tabbed MDI documents

TabsTileHorizontally

You now can cascade, tile horizontally, and tile vertically tabbed MDI documents.  This screenshot shows how six tabbed documents are tiled horizontally.

New WindowControl features

WindowControl

WindowControl has several new options and even allows custom content to be in the title bar.  This screenshot shows a small progressbar in the title bar.

Close tabs with middle-click

An option has been added to allow tabs to close with a middle-click, much like in some popular browsers.

ProductEditors32

Editors for WPF

Improved min/maximum value support

The built-in editors have had support for min/max values improved.

ProductNavigation32

Navigation for WPF

New Windows 7-like expander style

ExpanderStyle

A new style has been added that renders similar to the Windows 7 expanders and even has smooth animation.  The style is customized for each system and Office theme.

Built-in expander styles updated to support all expand directions

We’ve updated all our built-in expander styles so that all expand directions are supported: up, down, left and right.

ProductPropertyGrid32

PropertyGrid for WPF

New textbox and dialog button property editor

PGDialog

We’ve added a new built-in property editor that uses a TextBox and includes a button that can be used to show a dialog.

ProductSyntaxEditor32

SyntaxEditor for WPF

Finalized language definition format

This build finalizes the new language project and language definition XML formats.  All language samples have been updated to use them instead of the classic SyntaxEditor 4.0 for WinForms dynamic language XML definition format.

Language Designer application

LangDesigner

Very major improvements (several weeks of dev time) have been made to the Language Designer application.  It has a number of helpful tools for quickly getting started building a syntax language for use with SyntaxEditor.  It now just takes a few minutes to get up and running, even for SyntaxEditor newbies.

Automated quick info session processing

QuickInfo

We’ve added a new quick info provider service that can be added to a language.  This service watches for mouse hovers and just asks you what to display in response to hovers over different areas of the editor.  Quick info can be displayed for hovers over the text area, or any other part of the editor such as in margins.

View mouse hover event

A new view mouse hover event has been added.  We handle all the processing for determining when to fire it.

Caret and selection brush customization

SelectionBrush

You now can completely customize the look of the caret and selection.  Don’t like our default settings?  Change them however you like!

Completion list display when user starts typing a word

We’ve added a new feature to make it easy to know if the user is starting to type a new word, so that a completion list can display in response.

MGrammar tokens now get assigned a token key

We’ve updated tokens generated from the Oslo Dataflow Add-on to provide an IToken.Key value if a TokenKey attribute is specified in the original MGrammar source

ProductShared32

Shared Library for WPF

Unique tooltip for PopupButton popup indicator

We’ve added a new PopupIndicatorToolTip property to PopupButton, which allows the popup indicator to display a unique tooltip, rather than the tooltip for the main button area.

VS 2010-like floating document features coming soon to Docking/MDI for WPF

by Bill Henning (Actipro) September 24, 2009 at 02:06

We’ve been hard at work on some very major new Docking/MDI for WPF features that will be coming in the WPF Studio 2009.2 release.  In this post I’d like to give a quick preview of some enhancements: floating documents, maximizing rafting windows, and custom rafting window chrome.

Here is a screenshot showing the new enhancements:

FloatingDocs

VS 2010-like floating documents

The biggest new feature is the ability for tabbed documents to be able to be dragged outside of the MDI area into a floating state, where they can be placed on a second monitor if desired.  In the screenshot, the WelcomeDocument.rtf docking window is a document window.  It can be docked anywhere in the tabbed MDI area or can be floated such as it is shown.  Note the document’s icon even appears in its titlebar.

Maximizing rafting windows

Rafting windows are containers for docking windows that are in a floating state.  Now all rafting windows can have the ability to toggle between maximized and restored states.  You can see the maximized button on each of the rafted windows in the screenshot.

Custom chrome for rafting windows

All rafting window titlebars and borders in version 2009.2 will have a custom chrome that matches the current application theme.  In the 2009.1 version, rafting windows let the system draw the titlebars and borders.  By having the rafting windows be themed, they truly match the application’s theme.  This is especially useful for our built-in themes like the Office blue, silver, and black ones.  The rafting window in the screenshot that contains the Solution Explorer and Class View shows the new chrome, in this case for Aero theme.

Release timeframe

We have one more WPF Studio 2009.1 maintenance release planned for the coming weeks.  After that we will prepare for the first WPF Studio 2009.2 release, which will contain all the functionality described here.

Remember that if you purchase WPF Studio 2009.1 now, you will get the 2009.2 version free when it is released since all WPF Studio license purchases come with a year of free upgrades to new versions.

WPF Studio 2009.1 build 503 adds major new SyntaxEditor and Docking/MDI features

by Bill Henning (Actipro) July 24, 2009 at 09:33

WPF Studio build 503 was just released and includes a lot of updates to our WPF products, some being major new features.  I’ll review some of the big updates made to SyntaxEditor and Docking/MDI below.

ProductSyntaxEditor32

SyntaxEditor for WPF

Lexical parsing terms renamed to fit industry standards

In the previous builds, we called the object that performed lexical analysis a lexical parser.  After preparing to add our new syntax/semantic parsing core framework, we renamed instances of the term “lexical parser” to “lexer”.  This allows us to use the industry standard pair of terms “lexer” and “parser” going forward where a lexer is what performs lexical analysis, and a parser is what performs syntax/semantic analysis.

Multi-threaded core parser framework support added to languages

The addition of parser support to SyntaxEditor is a huge step forward for the product since it brings us closer to being able to implement the add-ons we have in our SyntaxEditor for WinForms product.  What is a parser?  As mentioned above, it’s anything that performs syntax/semantic analysis.  Our additions in this build provide an automated mechanism where text changes in a document can auto-trigger a call to a parser via a worker thread to parse document text and return a result asynchronously.  Most often, the result is some sort of AST, syntax error list, symbol tree, etc.  We don’t yet have a grammar that will generate ASTs like we did in WinForms, however our parser mechanism is very open and easy to use.  So it’s simple to wire up your own parser code or a call to any third party parse like MGrammar or ANTLR.

Two new QuickStarts demonstrating how to implement a parser

Two new QuickStarts have been added that show off how to create a basic parser for a language, have it called from a worker thread on text changes, and respond in the UI when the parse data result is returned asynchronously.

ProductDocking32

Docking/MDI for WPF

Magnetism

Magnetism is a feature that kicks in when dragging rafting windows or standard MDI windows.  When the corners or edges of the window being dragged get close to another corner/edge, the dragged window will snap itself next to the stationary window.  You have total control over the sensitivity of the magnetism and how far apart the windows will snap.

Tab appearance customization, tinting, and blinking

Docking windows now have a number of properties that help you use custom brushes for tab display in various mouse states.  In addition to that, tabs can be tinted to any color.  This allows for tabs to be easily rendered similar to those in OneNote.  Via the use of this feature, you can also create blinking tabs to notify the user that attention is required.

Easy primary document retrieval and change notification

Due to popular request, IMdiHost (the core MDI host interface implemented by both TabbedMdiHost and StandardMdiHost) now has a new PrimaryWindow property and PrimaryWindowChanged event.  This property tells you the “main” document in the MDI area.

Icons for WindowControl

Icons will now show up on WindowControl, and accordingly on standard MDI windows.

Eight new QuickStarts

That’s right, we’ve added eight new QuickStarts with build 503 to show off both new features and some other interesting existing features.  Be sure to check them out.

Docking/MDI for WPF to get new magnetism features

by Bill Henning (Actipro) July 21, 2009 at 04:28

Another new feature that we have added to our Docking & MDI for WPF product, is magnetism. This is a popular feature of the Dock controls in Actipro UIStudio and will be available in the upcoming WPF Studio release.

The magnetism features take effect when dragging and resizing undocked tool windows, as well as documents in the MDI area (standard MDI mode only). When magnetism is active, any undocked tool windows or standard MDI documents that are dragged will attempt to "snap" their corners to other nearby window corners. If a corner is not found nearby, then the dragged window will attempt to align to the edge of another nearby window instead. This makes it very easy for the end user to align windows in a column or row. Additionally, the resizing of windows will also use magnetism to "snap" edges to the location of other nearby window edges.

Magnetism

There are two new properties on the DockSite that can be used to customize the magnetism behavior. The first is MagnetismSnapDistance, which indicates the distance at which magnetism begins to snap windows being dragged. If this value is greater than zero, magnetism is enabled. If set to zero, then magnetism is disabled. Increasing this property's value, which defaults to 5, will increase the range over which the magnetism will work.

The other property is MagnetismGapDistance, which indicates the distance between windows that are snapped together via magnetism. If this value is greater than zero, there will be a gap between windows that are snapped together.

Again, these great new features will be available in the next build of WPF Studio.

Docking/MDI for WPF to add icons to standard MDI windows

by Bill Henning (Actipro) July 15, 2009 at 10:31

We've added support for icons to our WindowControl, which is a control that looks and acts like a Window and can mimic both normal and tool window styles.

WindowClipping (4)

Standard MDI windows in Docking/MDI for WPF, showing icons

WindowControl is used through our Docking/MDI for WPF product, but most notably when using the standard MDI host. So if you have an image source defined on a DocumentWindow or ToolWindow, it will show up in the associated standard MDI child window. If you are using the WindowControl directly, you can now specify an image source to be displayed. 

This new functionality will be in the next maintenance release, build 503.

Docking/MDI for WPF to add individual tab tinting like in OneNote

by Bill Henning (Actipro) July 14, 2009 at 04:19

Lately we've been working on adding features to our Docking & MDI for WPF product. One area that we've just enhanced is customization of the document window and tool window tabs. You may have seen this feature in Office 2007 OneNote, which uses colored tabs

This new feature will be in the next WPF Studio release (build 503).

Colored Tabs

We've added several properties to DocumentWindow and ToolWindow that can be used to customize the look of the associated tab, if any. You can explicitly define the brushes used for the normal, hover, and selected states. Alternatively, you can specify a tint color and the default brushes will automatically be tinted toward that color. In the image below, the document windows use a tint color and the tool windows explicitly define brushes for the various states. You can see that the document tabs use a gradient just like the default look.

DockingColoredTabs

With these new properties, you can define a SolidColorBrush that uses a ColorAnimation and produce a flashing effect. This can be used to alert the user that something needs their attention. We provide a sample that shows how this can be done using an attached behavior, which includes full source code.  More...

Improved Docking/MDI for WPF WinForms compatibility

by Bill Henning (Actipro) January 13, 2009 at 18:13

In a December blog post titled Docking & MDI for WPF – Improving WinForms interop, I discussed some of the problems with WPF in general and WinForms interop, where interop content is rendered on top of any WPF content in the same root Window.

A number of our Docking & MDI for WPF customers are using WinForms controls in their MDI area and ran into the issue where auto-hide flyouts and dock guides would render below the WinForms content.  Obviously that’s not good.

There is no easy way to fix the issue since it is a low-level WPF issue, however we have come up with design changes that sufficiently work around the problems.  Back in December, a WPF Studio maintenance release resolved the issue where auto-hide flyouts would appear below interop content in the MDI area, via a new optional property setting. 

DockGuides

Docking & MDI for WPF showing how recent code changes allow dock guides and drop targets to  appear above WinForms controls in the MDI area

Today I’m happy to announce that WPF Studio build 4.5.0484 resolves the other main issue, which is dock guides appearing below interop content.  Here is a screenshot taken today showing how dock guides and drop targets now appear above interop content, in this case a SyntaxEditor for WinForms control.

Grab the latest WPF Studio maintenance release to get this update.

Docking & MDI for WPF - Improving WinForms interop

by Bill Henning (Actipro) December 11, 2008 at 23:22

We’ve had a lot of requests lately for improved support when using any sort of interop control (generally WinForms-based) within our Docking & MDI for WPF product.  In should be noted that interop content may also include things like DirectX content, etc.

The main problem is this, WPF renders any interop content on top of WPF content on the same root window.  The issues are described lower down in this topic:

http://msdn.microsoft.com/en-us/library/ms742522.aspx

In addition to the content rendering issues in WPF, there are some focus handling issues when dealing with interop controls.

What are we doing about it?

We have begun moving forward with finding ways to work around the above issues.  Today I’d like to talk about a new workaround included in build 482 that was just released.

One major issue with Docking & MDI was that auto-hide flyouts would appear below interop content that was located in the MDI area.  I’m happy to say that we’ve come up with a new property on DockSite that helps with this particular issue.

AutoHide

An auto-hide flyout (Tool Window 1) that shows on top of two documents with WinForms-based content

By setting the new DockSite.UseHostedAutoHidePopups property to false, you can now achieve auto-hide flyouts that appear above interop content.  In the screenshot above, you’ll notice a WPF tool window flys out on top of documents that contain a SyntaxEditor for WinForms control instance and a WinForms WebBrowser control instance.

We recommend that if you do not host WinForms content in your documents, you should still keep DockSite.UseHostedAutoHidePopups its default value of true.

This was very tricky to implement and is a major step forward for the product!

Moving forward

We still have some more areas to work on.  It’s likely that the next area will be a workaround so that the dock guides (when dragging a window) will appear on top of interop content.  Stay tuned!

New PropertyGrid features and other WPF Studio build 471 updates

by Bill Henning (Actipro) October 3, 2008 at 01:53

The latest maintenance release of Actipro WPF Studio v4.5.0471 includes several large updates to the PropertyGrid product, several small updates to other WPF Studio products, and a number of brand new QuickStarts for the Sample Browser.

PropertyGrid Features

Filters

The first new PropertyGrid feature is the ability to quickly and easily filter the items presented. We've included several built-in filters for string and boolean properties, as well as filter groups. String filters support everything from Equals to regular expressions and groups can be used to combine any number of filters using AND/OR logic.

PropertyGridBeforeFilter PropertyGridAfterFilter

Shows the PropertyGrid before (left) and after (right) text is typed to filter out properties by name

We designed the filters so that they can readily be used directly from XAML, including support for data binding. Custom filters can be used when the built-in filters are not enough. 

Filters allow users to quickly find a specific item, or they can be used to permanently exclude items from being displayed. 

A common use of filters is to provide a TextBox above the property grid.  When the end user types in text, only the properties whose names contain the text are displayed.  This is displayed in the screenshot above.

Read-Only State

We have also added a read-only state to the PropertyGrid, which is configured using the new IsReadOnly property. Using this new property, all the value editors in the PropertyGrid can be set to prevent changes.

PropertyGridReadOnly

PropertyGrid with the global IsReadOnly flag set to true; note all values are disabled in this mode

Memory Usage and Other Fixes

Several memory issues and other fixes found since the initial product release are also included in this release.

New Demos and QuickStarts

We've added five completely new demos and QuickStarts to this release, along with updating two of our existing QuickStarts with new functionality.

Docking & MDI Custom Docking Windows

We've had several requests to allow our DocumentWindow and ToolWindow controls to be inherited so that they can be defined as their own classes with separate XAML.  There was a core WPF issue that prevented this in the past (styles wouldn't be applied to the inherited controls) however we've found a workaround for this issue and implemented it in build 471.

In addition, we've added a new QuickStart that shows exactly how to define custom DocumentWindow and ToolWindow classes and reuse them in a DockSite.

MonthCalendar Day Highlighting

Another request we've gotten from several customers is to be able to highlight certain days within our MonthCalendar control.  In build 471, we show the implementation of a custom class that highlights certain days. 

MonthCalendar

The MonthCalendar control showing several types of highlighted days

The same concept could be used to highlight holidays, birthdays, etc. in your own applications.

Enjoy the update!