As the latest CTP shows, we are cranking along on WPF. Most of our time is going towards bug fixing and improving performance. Really important stuff, but not always terribly exciting for you to read about. <g> But there are few genuine features that my "element services" team helped bring into the June CTP:
Hardware accelerated layered windows -- yup, we've been working on this for quite awhile, it only took three of our best developers! But I do need to throw in two caveats:
Window.AllowsTransparency -- now you can create a layered window without using pinvoke, check out <http://laurenlavoie.com/avalon/162>
Xaml line numbers at runtime -- If you have a legal xaml, and it's the sort of error that gets caught at runtime rather than compile time, WPF wouldn't tell you the line number -- because xaml line numbers were thrown away after the compilation was done. Until now, that is. It's not on by default, because we didn't want to bloat your executable size, but if you put the following in your project file, you'll get line numbers at runtime.
<!-- under the <PropertyGroup> tag --><XamlDebuggingInformation>true</XamlDebuggingInformation>
GetValueSource -- ever wonder where a property got its value from? Try this:
ValueSource s = DependencyPropertyHelper.GetValueSource(button, Button.ForegroundProperty);
That will tell you the category where the value came from, eg:
public enum BaseValueSource { Default = 1, Inherited = 2, DefaultStyle = 3, DefaultStyleTrigger = 4, Style = 5, TemplateTrigger = 6, StyleTrigger = 7, ImplicitStyleReference = 8, ParentTemplate = 9, ParentTemplateTrigger = 10, Local = 11, ElementStoryboards = 12, }
(There's also flags for expression, animation, and coercion, which are really orthogonal steps in the property value calculation)
This is intended only as a debugging aid, please don't make your program logic conditional on this. Please don't write a control that treats 5 differently if that 5 came from a style rather than the default value, that will confuse your users, and your code will break in future versions of WPF as we add more things to that enum.