|
|
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. | 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. 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. | | 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. 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. 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. 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. | | 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. 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. | | 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. The rows even animate up and down as you scroll between them. | | 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. 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. 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. | | 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.
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. | Docking/MDI for WPF Custom content in docking window tabs 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 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 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 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. | | Editors for WPF Improved min/maximum value support The built-in editors have had support for min/max values improved. | | Navigation for WPF New Windows 7-like expander style 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. | | PropertyGrid for WPF New textbox and dialog button property editor 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. | | 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 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 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 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 | | 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. |
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:  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.
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.
 |
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.
|
 |
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.
|
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. 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.
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. | 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.
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. 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...
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.
|

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.
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.
|

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!
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.
|

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.
|

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.
|

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!
|