With Blend 4, we have made a number of significant changes to how we generate XAML, primarily with the aim of generating more compact XAML. You will find a couple of these interesting:
a) DoubleAnimation v/s DoubleAnimationUsingKeyframesIn Blend 3, rotating a Rectangle in a Storyboard would give you the following:<Storyboard x:Name="Storyboard1"> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"> <EasingDoubleKeyFrame KeyTime="00:00:00" Value="15.091"/> </DoubleAnimationUsingKeyFrames></Storyboard>
In Blend 4, you now get the following (Note that you will find the user experience identical between Blend 3 and Blend 4 - if you were to drop an additional key frame, we will convert the animation to the type that lets you do keyframing)<Storyboard x:Name="Storyboard1"> <DoubleAnimation BeginTime="00:00:00" Duration="0:0:1.6" To="12.228" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="rectangle" d:IsOptimized="True"/></Storyboard>
b) TransformGroup v/s CompositeTransformIn Blend 3, rotating a Rectangle would give you the following:<Rectangle x:Name="rectangle" Fill="White" Stroke="Black"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="15"/> <TranslateTransform/> </TransformGroup> </Rectangle.RenderTransform></Rectangle>
In Blend 4, you now get the following:<Rectangle x:Name="rectangle" Fill="White" Stroke="Black"> <Rectangle.RenderTransform> <CompositeTransform Rotation="15"/> </Rectangle.RenderTransform></Rectangle>
Are there any other areas where you find the XAML being generated by Blend is more verbose than that would you would have liked? If so, I would love to hear about them!