The Actipro Blog

All the latest UI control development news from Actipro

WPF development - .NET Languages Add-on and Docking/MDI MVVM


We’re developing new controls and features on multiple fronts right now.  In today’s post I’d like to share some details of just a couple large items currently in the works for WPF.



A top customer request is to port the popular .NET Languages Add-on from Windows Forms to WPF.  This add-on contains advanced implementations of C# and VB that have everything from AST generation and code outlining to automated IntelliPrompt.

We’ve started working on the .NET Languages Add-on for WPF and are following the general syntax language development steps outlined in our Getting Started series of samples.

General Design Stages

The first stage is building grammars for C# and VB.  We’re using our new LL(*) Parser Framework that was added to SyntaxEditor in the 2010.2 version for this task.  We’re already a good chunk through the C# grammar and have started thinking of some additional ways to further improve the LL(*) Parser Framework, which we may work on next.

Once we have the grammar completed, syntax errors will be reported in the editor via squiggle lines and quick info tips for the squiggles.  Therefore it is vital that the grammar properly handles the entire C# and VB grammar so that syntax error reporting is correct.

The next stage after that is to add automatic code outlining based on the AST that is returned.  Nodes like type and member declarations should be foldable.

After that, we need to add code to return contextual data about a given location, such as whether the caret is in a type declaration, etc.  This can be a rather complex thing depending on how much detailed information is needed to support automated IntelliPrompt, especially since C# and VB each have hundreds of productions that make up their syntactic grammar.

The final large step is to add in automated IntelliPrompt.  This involves code for maintaining reflection data from “referenced” assemblies, along with reflection data from parsed source files.  Contextual data from the previous step helps determine “what” needs to show in completion lists and in quick info.  Appropriate reflection data is added to the IntelliPrompt popups based on the context.

At some point in this whole process, we’ll be adding new IntelliPrompt parameter info features to SyntaxEditor too, along with automated parameter info popups for the C# and VB languages, just like with the completion list and quick info.

First Beta Release

In the interests of getting something out into your hands, we may do a first beta release after the grammar and code outlining stages are complete, even if it’s only for C# initially.  This would give you a fast C# language with syntax highlighting, line commenting, AST generation, syntax error reporting, and code outlining.



For Docking/MDI we’ve started on a series of updates to add true MVVM support to the product.  This has been a top customer wish for a while.

So what will this functionality let you do?  It effectively will let DockSite behave like an ItemsControl.  There will be an ItemsSource property that you can bind to a collection of view models.  Each view model will auto generate a docking window container (overridable in the same way you can with ItemsControl) that will wrap the view model and display content for it.

An implicitly defined DataTemplate resource for the view model will be used to render the view model’s content within the docking window.  An ItemContainerStyle can be set on the DockSite to bind docking window properties like Title, etc. to appropriate properties on the view model.

This is going to be a major new feature to Docking/MDI’s already-expansive feature set and we’re very excited to be adding it, probably in WPF Studio 2011.1.

Pingbacks and trackbacks (1)+

Comments are closed