After trying out the Orcas Betas I was very disappointed that the XAML editor had actually been made harder to use, especially after using the VS 2005 November 2006 CTP addin for so long. There were some great additions to the editor and it seemed to be more stable at least in the time that I spent in it but there were some usablity differences that I found infuriating and forced me to stop using the Betas for my WPF development. Now that I’ve been using the RTM version for a while I’m happy to report that the XAML editor is much more usable thanks to the new features that made it into the final product.
Now if you’ve gotten used to the old XAML editor (or the plain XML editor, which the CTP version was built on) closing your tags for you and adding quotes you won’t need to stop every 5 keystrokes to go back and add all the stuff you expected to be generated when using Orcas. The new default view option is further icing on the cake. These issues were brought up by a lot of people during the Beta process and obviously were added into the product near the end of the development cycle as indicated by the separate Options dialog page for their settings as well as their absense from the Betas. This really shows that MS does heed the feedback they get during the CTP/Beta process.
A few additional WPF features that you get by moving from the 2005 CTP to 2008 RTM:
- The designer actually works more than 10% of the time! It’s still quite possible to “Whoops” it and it’s still short of the rendering ability of Blend but it’s a big step from the CTP. It supports double-clicking to create event handlers but unfortunately I haven’t yet found a way to select anything other than the default event like you can in Blend and in the WinForms/ASP.NET designers.
- Intellisense doesn’t break when you reference a custom xmlns. It’s also much more geared toward XAML now that it’s not based on the XML schema Intellisense. It also works for adding xmlns definitions and lets you choose from a complete (more or less) set of .NET namespaces in assemblies referenced by your project.
- Document Outline now works for XAML and even has an element level preview feature that renders an element as you mouseover it in the outline.
The preview does require that the design view be rendered but the outline itself is always there even if you’re staying in the text view. The outline breadcrumb familiar from the ASP.NET designer also appears at the bottom of the editor in both modes and shares the same preview functionality.
- Expanded syntax highlighting provides separate font settings for XAML which consist of all the normal XML categories plus Markup Extension Class, Markup Extension Parameter Name, and Markup Extension Parameter Value. There’s also opening/closing tag highlighting that works just like the bracket highlighting in C#.
- Formatting options let you set a tag wrapping length so elements with many attributes will get wrapped to the next line or you can have every attribute placed on its own line.
- The Property dialog works for XAML. Like the Document Outline preview it requires that the designer renders the XAML, but after that it can be used even in the text only editor where it magically adds new attributes for any settings that you change. This should be especially helpful for beginners who would otherwise have to waste time digging through Intellisense to find the name of the property they want to set.
- The integrated Zoom control lets you zoom in or out on the designer just like in Blend. It also has a fit to window button that toggles to 100% and the maximum viewable.
- Solution Explorer knows that you’re in a WPF project. Now if you right-click on your project and Add -> User Control it gives you a WPF rather than WinForms User Control!
- There is real backward compatibility with 2005 CTP so you don’t need to be held back by your poor coworkers that can’t upgrade. When moving a project you will need to run through the upgrade wizard the first time and you will need to plan on using a separate 2008 solution as 8.0 and 9.0 slns are not compatible. The project upgrade process will make a few changes including adding some new project properties (which will be ignored by 2005), associating some new sub-elements (Generator and SubType) with included XAML files, and removing the explicit reference to the Microsoft.WinFX.targets MSBuild file. This last change is the only one that will mess with 2005 so once the upgrade is completed, open the project as XML and add <Import Project=”$(MSBuildBinPath)\Microsoft.WinFX.targets” /> near the end of the file right below the CSharp/VisualBasic Import statement. After that the project should work in both versions.
One additional tip: 2008 is much more stable on machines that have not had previous Beta installations. I know it’s a standard recommendation but my personal experience has been that the WPF designer especially is much more prone to crashing on my machines that were running Beta 2 and had it uninstalled than my machines that were clean OS installs or only had 2005.