PDC 2008 - Microsoft shows huge commitment to WPF in development tools

Thursday, October 30, 2008 4:08:30 PM (Central Standard Time, UTC-06:00)

Microsoft has used WPF to write tools in the past... Expression Blend and Design being two of those tools among others.  Its extremely exciting to see that they are making even a bigger commitment to WPF as a platform for writing applications.  This week at PDC they announced that the shell of the Visual Studio 2010 IDE will be written in WPF.  Since Visual Studio has a huge legacy code base and many tools already built a top the DTE, not all of it will be converted to WPF and managed code.  However, one of the most noticeable changes will be that the code editor will be written using the rich text capabilities of WPF... which means that we will now have a very powerful presentation model (rich text, animation, etc) in the IDE that we can leverage to build better IDE experiences. This also means that the bar for extending Visual Studio IDE will be greatly reduced.

Customizing the Visual Studio Start Page

One of the extension points for VS 10 will be modifying the start page... which is possible today, but the model for integrating into other aspects of the IDE (like macros or commands) will be far simpler than what we have today.  To customize the home page  will require you to modify the Xaml file that is found in Documents\Visual Studio 10\Start Page\StartPage.xaml.  To integrate with Visual Studio commands will be a matter of passing in a well-known string identifier for the command.

Managed Extension Framework (MEF) enables the Add-In Model

The new text editor will be composed of MEF components which can be swapped out and customized by supplying your own implementation.  The customization capabilities will be limited to the following areas :

Classification: Rich Text Formatting

- Which will allow us to create a richer reading environment for code.

- Ability to leverage WPF's rich text capabilities.

 

Adornments: Power Graphics

Any WPF visual - can render a UI element anywhere.

- Associate adornments with text, render comments in the MSDN document style inline with code.

- Support for animation and behavior of different aspects of the code.

 

Margin and Scrollbar Customization

- Allows for the ability to create visual representations of structure in the margins of the code editor... this looked very similar to the way ReSharper implemented their Marker Bar (shown below).

image

 

 

Intellisense and Smart Tags

- Contribute to completion of Intellisense ... meaning that we can now filter items.  For a long time I have wanted the ability to modify the intellisense so that when I need to I can just view only the properties, methods or events for a type... and it looks like now the bar may be lowered enough to implement something like this relatively easily.

- Override the presentation of the parameter help or quick info

- Add menu items to smart tags

 

If you want more information, you can check out the videos on channel9

WPF Office Ribbon and other goodies released at PDC

Tuesday, October 28, 2008 4:55:06 PM (Central Standard Time, UTC-06:00)

You can get the newest WPF Ribbon, DatePicker/Calendar control, preview of VisualStateManager (VSM) for WPF from the WPF Toolkit site... in addition the DataGrid is now out of CTP and was released.

image

PDC 2008 - Blend Tips & Tricks

Monday, October 27, 2008 6:48:07 PM (Central Standard Time, UTC-06:00)

I was a little disappointed in the content of this presentation.  There wasn't as many Tips & Tricks as I would have expected.  One of the tips they attempted to show (which the demo actually failed) involved showing what happens when you try to access an object that isn't available on the Blend design surface... the result on the design surface is an exception that keeps you the user from previewing the UI. If I recall correctly they were were trying to check whether the Page object was available by checking the IsEnabled property, which seems a bit unusual.  I have ran into similar issues with Blend and this is the trick I have used before accessing an object that may not be available when the UI is rendered on the design surface.

/// <summary>
    /// Base class for all Parts in the Shell
    /// </summary>
    public class UIPart : System.Windows.Controls.UserControl, IPart
    {
        
        #region Constructors
 
        /// <summary>
        /// Initializes a new instance of the <see cref="UIPart"/> class.
        /// </summary>
        public UIPart()
        {
            //if we don't check this... the UI will not display correctly in the designer.
            if (InDesignMode)
                return;
 
            partIdField = this.GetType().Name + "_" + Guid.NewGuid();
 
            this.GotFocus += UIPart_GotFocus;
            this.Loaded += UIPart_Loaded;
            this.IsVisibleChanged += UIPart_IsVisibleChanged;
            this.Initialized += UIPart_Initialized;
        }
 
        /// <summary>
        /// Gets a value indicating whether [in design mode].
        /// </summary>
        /// <value><c>true</c> if [in design mode]; otherwise, <c>false</c>.</value>
        public bool InDesignMode
        {
            get { return System.ComponentModel.DesignerProperties.GetIsInDesignMode(this); }
        }

One thing that I did gleam from the talk was that there is a new version of Snoop  available that has the capability to render the composition of an application in a 3D model, the composite model of Blend is shown below:

blendcomposte3d

Another WPF Debugging Tool - Cracked.NET

Sunday, October 26, 2008 6:52:27 PM (Central Standard Time, UTC-06:00)

I met with Josh Smith tonight and he had mentioned that he has released a new debugging tool for WPF (I think it will also work on WinForms) called Cracked.NET.  One of the things that is interesting about this is that Josh is using Iron Python to inject scripts into the application at runtime.