Jaime Rodriguez On Windows Phone, Windows Presentation Foundation, Silverlight and Windows 7
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:
Want to learn more about beta1. Here is a bit of the action:
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.
In beta 1
Expected by beta 2
Windows 7 light-up
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.
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:
Taskbar integration including:
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
LayoutRoundingSpeaks 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"
PingBack from http://www.alvinashcraft.com/2009/05/28/dew-drop-may-28-2009/
Jaime posted a good list of features in WPF4 , including what is in Beta1 and what is coming later.
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
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"?
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.
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.
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..
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.
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?
Jaime Rodriguez has just written a post about new WPF 4.0 features we can expect in the upcoming release
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
Thank you for submitting this cool story - Trackback from DotNetShoutout
This week on Channel 9, Brian and Dan discuss the top developer news including: - Bing - Microsoft's
#.think.in infoDose #31 (24th May - 1st June)
Will the pixel shader 3.0 support work in partial trust?