List of features to track in WPF4 and the details on beta1

I am late to this  but still wanted to share an “insider view” into the status of “WPF 4” in the recently released .NET Framework 4 and VS 2010  beta1.

Status of the run-time (on the public beta 1).
The WPF team cranked hard until last minute on 3.5 SP1 so they have been playing catch-up to .NET 4 and VS2010.  The beta does not really do justice to the progress the team is making towards RTM. In a few cases, the team ‘compromised’ not shipping the feature in beta1 to optimize for the RTM schedule (preparing a beta does take integration work and testing, plus they had to put the longer/harder features up-front to decrease ship risks). 
Beta2 appears to be in good shape for you to preview and share feedback still before .NET 4 RTMs.  

For those looking into beta1, I would say the two areas where we need feedback will be:

  • The new XAML stuff (in particular we want to make sure we do not break you)
  • The tools ( Cider designer); I would love to hear what people think of the new features.  

Want to learn more about beta1. Here is a bit of the action:

  • Video Interview with Ian Ellison Taylor WPF and Silverlight GM, and Kevin Gjerstad, WPF Group Program Manager.  It pretty much discusses what is in and out (for beta1 and RTM).
  • Rob Relyea recorded a video on the XAML enhancements.  This is a must watch and then follow it with this post and any other recent posts in Rob’s blog.
  • Jossef Goldberg has a great post on client profile in .NET4.  We recorded a video, to be posted in the next few days; look for it here via update to this post, or in the continuum show.
  • Tomorrow we are shooting the Touch video;  ironically they reached feature complete in beta2 today, maybe we can get a peek; video should be posted early next week. 
    [If you want to know why I am posting today instead of next week, we are doing LOB Tour in NY this weekend, so I am out on the road again. I hope you understand, post will be updated as we go]
  • WindowsClient.net now has a new section for the Cider designer. Karl Shifflett and the Cider crew will be putting videos there as they go. For starters, Mark Wilson-Thomas has a good “Lap Around Cider in beta1 .  

On the way to .NET 4.
Here is my view into the new features I am tracking and current (best guess) estimate on timelines. The list is not all inclusive, so let me know if I missed one you cared about.  note that this list focuses on new stuff;  I did not include all the bug fixes and minor improvements to existing stuff.

Huge WARNING!! None of the below features are guaranteed. Nothing is official until we RTM.
Please do not make assumptions or plans based on this list.

Category

Feature

In beta 1

Expected by beta 2

Windows 7 light-up

     
Multi-Touch Basic manipulation and inertia. Raw touch events are not in. Yes. Beta1 + Raw touch. A few tiny breaking changes.
  Taskbar integration Not in beta 1 Yes
  Vista + Win7 Native Dialogs Yes Same as beta1
  Ribbon (though it is not win7 specific at all). Not in beta 1 Ribbon will be shipping out of band still.  Next preview ships after beta2. It will RTM by .NET 4 RTM or earlier.
    Graphics& Text      
  Text enhancements Not in beta 1 Yes
  Cached Composition Not in beta1 Yes
  Support for Pixel Shaders written w/ HLSL 3.0 Not in beta 1 Yes
  Caret customization Not in beta 1 Yes
  ClearTypeHint Yes Same as beta1
Legacy effects get cut Yes. Old legacy Bitmapeffects are a no-op, unless it is one of the effects that are hardware accelerated. Same as beta1
Fundamentals & AppModel      
  XAML 2009 Beta1 Yes, minor changes.
  LayoutRounding Not in beta1 Yes
  Bindable Run Not in beta1 Yes
  Visual State Manager Not in beta1. In by beta2, now shipping in the framework.
  Animation Easing functions Yes Same as beta 1
  Datagrid Yes. Moved from toolkit to framework. Minor bug fixes. Same as beta 1.
DatePicker Move from toolkit to framework. Minor fixes. Same as beta1.
  Full Trust XBAP Not in beta1 Yes
  Databinding improvements Not in beta1. Yes
     Deployment
Client Profile New client profile is in, but no web bootstrapper. Still needs to be compressed (for size). Yes, full functionality.
  Client Profile Configurator No. Will ship out of band. No. Will ship out of band.
          Tools      
  VS2010 Cider Cider has a lot of improvements. Perf work is not done. Yes.
VS2010 new Editor Since the text enhancements are not in the run-time, the editor does not get them. Yes.
       

Note: At PDC, we said that DeepZoom would be in WPF4. Unfortunately that feature has been cut. We just could not squeeze it into the schedule.  There are workarounds to it: you can host Silverlight inWPF using web browser control or using the Silverlight hosting APIs.
 

Details on the features:
Below are high level descriptions around the features listed above. Must share that Ted Hu created the descriptions for a different document and I am shamelessly plagiarizing it. Thanks Ted.

Multi-touch
Windows 7 is introducing multi-touch input and manipulation processing, which Windows Presentation Foundation exposes. Multiple finger input will be exposed through existing and new input events, while new manipulation and inertia events will be exposed for developers to consume.

  • Multi-touch Manipulation and Inertia (Pan, Zoom, Rotate) events on UIElement
  • Raw Multi-touch events (Up, Move, Down) on UIElement, UIElement3D and ContentElement
  • Multiple capture supporting multiple active controls
  • ScrollViewer enhancement to support multi-touch pannning
  • Touch device extensibility
  • Future Surface SDK compatibility

Windows 7 Shell Integration
WPF 4 exposes several new Windows 7 Shell features to WPF developers These Shell features empower application authors to provide a richer, integrated user experience. The new taskbar is less cluttered and can convey more information at a glance. The Aero thumbnails support user commands. Jump lists provide access to contextual startup tasks and files available to the application.
WPF 4 will integrate Windows 7 JumpList functionality, including:

  • Tasks
  • Items
  • Recent and Frequent Lists integration
  • Custom Categories

Taskbar integration including:

  • Progress bar
  • Overlay Icon
  • Thumbnail buttons with commanding support
  • Description Text
  • DWM Thumbnail clipping

Text enhancements
WPF 4.0 Beta 2 introduces a new text rendering stack which allows for much clearer text rendering.  This change adds the necessary knobs to allow WPF text to look virtually indistinguishable from Windows’ traditional GDI-rendered text.  The clarity improvements also dramatically improve readability for many East Asian languages.

 

 

ClearType hint
ClearTypeHint allows app authors to enable cleartype when rendering text to IntermediateRenderTargets, where it would normally be disabled by the system.  The system normally disables cleartype on IRTs because Cleartype only works properly when it’s rendered to an opaque surface, and it’s extremely difficult for the system to determine if an IRT will be rendered with transparency.  By Setting this to true, you’re basically letting the system know that the IRT is transparent.  This means you can now enable cleartype with layered windows, in Visual/Drawing brushes, in Effects, and in 3D if you so desired it. 

Full-Trust XBAP
Starting in WPF 4.0, the ClickOnce elevation prompt is enabled for XAML Browser Applications (XBAPs) in Intranet and Trusted Zones, making it easier to deploy full-trust XBAPs. For XBAPs that require security permissions greater than the minimum code access security (CAS) permission grantset of the Intranet and Trusted Zones, the user will be able to click 'Run' on the ClickOnce elevation prompt when they navigate to the XBAP to allow the XBAP to run with the requested permissions.

LayoutRounding
WPF 4.0 will adopt the LayoutRounding property, originally introduced in Silverlight2. WPF’s layout engine frequently calculates sub-pixel positioning coordinates. This can lead to rendering artifacts as elements positioned on sub-pixel boundaries are antialiased over multiple physical pixels. LayoutRounding will force the layout engine to place elements on whole pixel boundaries, thus removing most of the rendering artifacts caused by this problem.

Bindable Run
The Run class has had a simple CLR property Text since the first release of the framework. In WPF 4.0 we have backed Run.Text with a dependency property. Among the many benefits of being a DP, Run.Text now supports data binding. One-way binding (from data source to Run.Text) is fully supported, and two-way binding is supported as long as the Run is not modified via the Text OM or from a RichTextBox.

Selection and caret customization
Simple app customization is a great WPF strength. In the past, the selection color and caret color for text input and reading controls (TextBox, RichTextBox, FlowDocumentReader, etc...) has been hard coded. WPF 4.0 will introduce the SelectionBrush and CaretBrush properties. These properties will allow developers to control the brush used to draw both selection and carets in many WPF controls.

Animation Easing functions
Is the exact same functions we announced in Silverlight 3;  I can not tell you who created them first; funny how schedules work; but really nice to have compatibility.

BindingExpressionBase.ValidateWithoutUpdate does for a single binding expression what BindingGroup.ValidateWithoutUpdate does for a binding group – namely it starts the validate/update process but stops just before writing a value back to the source item

When BindingGroup.SharesProposedValues is true, the binding group will keep track of proposed values even when the UI elements that hold them are replaced.  This supports a UI design pattern used by DataGrid (for example), where only one source property is presented with an “editing template” (containing editable controls – TextBox) while the other properties are presented with “display templates” (containing non-editable controls – TextBlock).   As the user focuses a new property, its display template is replaced by an editing template, while the previously focused property’s editing template is replaced by a display template.  The BindingGroup now manages the proposed value (if any) held by the old editing template, so that it can be displayed (if possible) in the display template and written back to the source when the user commits the binding group

LayoutRounding
Speaks for the feature already in Silverlight, where the layout system rounds any non-integral values at the time of a layout pass. This helps prevent the sub-pixel anti-aliasing effects that people describe as "blurriness"

Comments

  • Anonymous
    May 28, 2009
    PingBack from http://www.alvinashcraft.com/2009/05/28/dew-drop-may-28-2009/

  • Anonymous
    May 28, 2009
    Jaime posted a good list of features in WPF4 , including what is in Beta1 and what is coming later.

  • Anonymous
    May 28, 2009
    Add Calendar to list ( like Datagrid and DataPicker ).  I'm assuming this is the same as others. Also, could you get someone to update future controls coming in WPF Toolkit.  I wish the WPF Toolkit had more resources, releases, focus, etc. as Silverlight Toolkit.  I know releasing VS 2010 and .NET 4 is more important, but would like to see what's in the pipeline for WPF controls.  Thanks

  • Anonymous
    May 28, 2009
    That's a great shame about DeepZoom. We were really hoping for that make it in. I understand all about tight schedules, though. Do you think it's likely it will receive an out of band release later on, or will we likely have to wait for ".Net 5"?

  • Anonymous
    May 28, 2009
    I know very little on touch and Win7.  Will there be any tools released to work with a standard touch keyboard? Will this work with both WPF and Silverlight apps?  Example: I have a Textbox control and app runs on a touch machine with no keyboard or mouse.  Need to have the touch keypad popup via tool within Taskbar or can do via code ( Similar to OpenDialogBox() ).  Would be neat to have something for touch type applications to have a combo control of TextBox/Button like a Search control in Browsers.  Anything like this available now in APIs and/or dev tools? If not, is something like this coming?  Thanks again.

  • Anonymous
    May 28, 2009
    shaggygi, you are right that calendar is in there; I will fix that. Sorry if it looks like WPF Toolkit is not being updated; given we moved the code to .NET 4,  we are not maintaining the two codebases.  I am hoping around beta2, once we are ahead on .NET 4, then you will see some Toolkit love. I can't yet comment on the ideas the controls team has for future toolkit like relases; but some thing is coming. Also, the SL Toolkit you mention writes WPF controls too; if you look at DatePicker and Calendar, that is where they came from.  Over time you will see a bit more sharing and dual targeting.

  • Anonymous
    May 28, 2009
    swythan, Given we missed DeepZoom once already, I am hesitant to comment on it again, all I can say is that when we talk about it we keep saying "this is some thing people can do today, what if we just release a sample" ..   maybe one of those people talking about it as a sample ( that includes me) will have some time soon..   Right now the focus is beta2,  remind me about this when beta2 is out if no one has tackled it by then.. Cheers,

  • Anonymous
    May 28, 2009
    Jamie, Right now there a lot of things that are available only in Silverlight that make creating applications which are sharing code between WPF in Silverlight very difficult. These are things like ChildWindow, URI mapper, the virtual functions on the page class (which are different) and the list goes on. How much effort is being put into ensuring that these things are consistent across both platforms? I've written a library that tries to make these things easier to manage, but it's a lot of work for things that really should be part of the core WPF framework. ...Stefan

  • Anonymous
    May 29, 2009
    Hi Jaime, thanks for sharing this! I'm expecting the text enhancements, layout rounding, and caret customization in Beta 2. I also would like to see a performance benchmark comparison between .NET Fx 3.5 SP1 and 4.0, perharps somewhere in the future. I hear a lot of people around me are complaining about the WPF performance. What can we expect about performance improvement in 4.0? Thanks again!

  • Anonymous
    May 29, 2009
    Jaime Rodriguez has just written a post about new WPF 4.0 features we can expect in the upcoming release

  • Anonymous
    May 29, 2009
    It was announced Win7 would be available for the holidays this year.  Will .NET 4 and VS 2010 RTM be released around this time, as well?  Thanks

  • Anonymous
    May 29, 2009
    Thank you for submitting this cool story - Trackback from DotNetShoutout

  • Anonymous
    May 29, 2009
    This week on Channel 9, Brian and Dan discuss the top developer news including: - Bing - Microsoft's

  • Anonymous
    June 01, 2009
    #.think.in infoDose #31 (24th May - 1st June)

  • Anonymous
    June 13, 2009
    Will the pixel shader 3.0 support work in partial trust?