1 / 79

Wettbewerbstalon ausfüllen und tolle Preise gewinnen!

Wettbewerbstalon ausfüllen und tolle Preise gewinnen!. Nicht vergessen!. Stempel bei Partner holen und einwerfen!. Ziehung heute Abend 19:45 und 20:45 Uhr. Windows Presentation Foundation 4.0. Die neuen Features im Überblick. Christian Moser Zühlke AG moc@zuehlke.com www.wpftutorial.net .

waldemar
Download Presentation

Wettbewerbstalon ausfüllen und tolle Preise gewinnen!

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wettbewerbstalon ausfüllen undtolle Preise gewinnen! Nicht vergessen! Stempel bei Partner holen und einwerfen! Ziehung heute Abend 19:45 und 20:45 Uhr

  2. Windows Presentation Foundation 4.0 Die neuen Features im Überblick Christian MoserZühlke AG moc@zuehlke.com www.wpftutorial.net

  3. WPF 4.0 – Viele spannende, neue Funktionen XAML Parser DatePicker Animation Easing Calendar DataGrid XAML 2009 Chart Control Layout rounding Ribbon Text rendering Spell-Check Dictionaries Pixel Shaders 3.0 Cached Composition Visual State Manager Full Trust XBAP TaskBar Integration XBAP/HTML Interop Windows 7 API .NET Client Profile Jumplists Custom ClickOnce UI DataBinding für InputBindings Virtual UI Automation Multitouch Common Dialogs Visual Studio 2010

  4. Ausbesserung von Schwachpunkten Interne Konsolidierung Wünsche der Community abdecken Produktivität der Entwickler erhöhen Bessere Controls für LoB Applikationen Modernisierung der API Bessere Kompatibilität mit Microsoft Silverlight Ziele von Microsoft für WPF 4.0

  5. WPF Roadmap WPF 3.5 WPF 4.0 WPF 3.0 WPF 3.5 SP1 • WPF Toolkit 2 • VSM • Chart • WPF Toolkit 1 • DataGrid • DatePicker • WPFToolkit 3 • Theme Pack • AutoCompleteBoxAccordion 2007 2008 2009 2010 • SL Toolkit 2 • Accordion • TimePicker • Chart • SL Toolkit 1 • TreeView • DockPanel • WrapPanel Silverlight 1 Silverlight 3 Silverlight 2 Silverlight 4

  6. Nächsten Montag 12 April 2010 4.0

  7. <XAML />

  8. Ein neuer XAML Stack für alles .NET 3.5 .NET 4.0 WCF / WF PresentationFramework WCF / WF PresentationFramework XOML Engine XAML Engine BAML Engine BAML Engine PresentationCore PresentationCore WindowsBase WindowsBase XOML Type Info XAML Type Info System.Xaml.dll mscorlib System System.Xml XAML Engine XAML Type Info mscorlib System System.Xml

  9. Bessere Namensauflösung mit {x:Reference} Voller Support für Generics {x:TypeArguments} Built-in Types <x:String>, <x:Bool> Beliebige Typen für Dictionary Keys (x:Key) Events ohne Kompilation (Findet die Methode in der Klasse oder über MarkupExtension) Konstruktoren mit Argumenten {x:Arguments} Factory Methods {x:FactoryMethod} Neue Sprachkonstrukte in XAML 2009

  10. Bessere Performance Viele BugFixes Konsistenz zu WCF und WF API zum Laden und Schreiben von XAML Später: Auch für Silverlight Neuer XAML Parser

  11. XAML Object Model: O-M-V + Types <StackPanel> <Button x:Name="button" Click="foo"Content="Test" /> <Button>Test</Button> <Button> <Button.Content>Test</Button.Content> </Button> </StackPanel> Objects RootObject Collection Members Properties Events Directives (x:Key) Values Xaml Types Xaml <-> ObjectUmsetzungs-Beschreibung

  12. XAML Node Stream Processing whilereader.read() XamlXmlReader.Read() StartObjectButton StartMemberContent Value«Test» EndMemberContent EndObjectButton XamlType XamlMember XamlObjectWriter.Write()

  13. Beispiel «Robust XamlLoader» var reader = newXamlXmlReader("loose.xaml"); var writer = newXamlObjectWriter(reader.SchemaContext); while (reader.Read()) { switch (reader.NodeType) { caseXamlNodeType.StartObject: if (reader.Type.IsUnknown) continue; break; caseXamlNodeType.StartMember: if (reader.Member.IsUnknown) continue; break; } writer.WriteNode(reader); } XAMLNode Pump

  14. ...aber WCF / WF PresentationFramework VS2010 BAML Engine MarkupCompiler x x PresentationCore • MarkupCompiler und Designer von VS2010 und Blend unterstützen diese Features noch nicht! • Nur für Loose XAML...  WindowsBase  System.Xaml.dll XAML Engine XAML Type Info mscorlib System System.Xml

  15. XamlDomObject rootObject = XamlDomServices.Load("Window1.xaml"); foreach (XamlDomObject domObject in rootObject.DescendantsAndSelf()) { Console.WriteLine(domObject.Type); } Neu Verfügbar: Microsoft XAML Toolkit • Vollständige XAML DOM API • XAML FxCop integration • SilverlightSchemaContextto parse Silverlight XAML using System.Xaml

  16. PDC 2008 – XAML 2009http://channel9.msdn.com/pdc2008/TL36 PDC 2009 - XAML Futureshttp://microsoftpdc.com/Sessions/CL24 Blog von Rob Relyea (XAML Architekt)http://blogs.windowsclient.net/rob_relyea XAML Toolkithttp://michaelshim.com/blog/2009/11/19/xaml-toolkit-ctp/ Weitere Informationen

  17. New Controls

  18. Features Auto generation of columns Selection of cells and rows Grouping and filtering Frozen columns Column sorting, reordering and resizing Row details Flexible Styling DataGrid Control Demo

  19. Features Multiple selection modes Blackout Dates Limitation of displayed date range DisplayModes for Month, Year and Decade Calendar and DatePicker Control Demo

  20. Chart Control – WPF Toolkit

  21. Features Special Ribbon Window All Features of Office 2010 Office 2007 und 2010 Themes Aber: - Release erstnach .NET 4.0 - Etwas MVVM unfreundliche API Ribbon Control – CTP Preview

  22. Styling

  23. States von Controls Disabled Normal Mouseover Pressed Unfocused Focused

  24. <StyleTargetType="Button"> <Setter Property="Template"> <Setter.Value> <ControlTemplate> <Border Background="{TemplateBinding Background}"> <ContentPresenter /> </Border> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Blue" /> </Trigger> <Trigger Property="IsPressed" Value="True"> <Setter Property="Background" Value="DarkBlue" /> </Trigger> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Background" Value="Gray" /> </Trigger> </Style.Triggers> </Style> Umsetzung in .NET 3.5

  25. Steuert die Zustände und Übergänge von Controls Verwendet dazu Storyboards Kompatibel zu Silverlight Wechsel zwischen States nur aus Code Internal VisualStateManager.GotoState() External VisualStateManager.GoToElementState() Der Visual State Manager Control VisualStateManager

  26. <Border> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="TrafficStates"> <VisualState x:Name="Red"> <Storyboard> <ColorAnimationUsingKeyFrames …> <EasingColorKeyFrameValue="Red"/> </ColorAnimationUsingKeyFrames> </Storyboard> </VisualState> <VisualState x:Name="Yellow"> <Storyboard> <ColorAnimationUsingKeyFrames …> <EasingColorKeyFrame Value="Yellow"/> </ColorAnimationUsingKeyFrames> </Storyboard> </VisualState> <VisualState x:Name="Green"> <Storyboard> <ColorAnimationUsingKeyFrames …> <EasingColorKeyFrame Value="Green"/> </ColorAnimationUsingKeyFrames> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> </Border> Visual State Manager in XAML

  27. xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" <local:TrafficLightControl> <i:Interaction.Triggers> <i:EventTriggerEventName="MouseLeftButtonDown" SourceObject="{BindingElementName=trafficLightControl}"> <ei:GoToStateActionTargetObject="{BindingElementName=trafficLightControl}"StateName="Yellow"/> </i:EventTrigger> </i:Interaction.Triggers> </local:TrafficLightControl> Steuern von States aus XAML Demo • Verwendung der GoToStateAction aus System.Windows.Interactivity

  28. [TemplateVisualState(Name = "Green", GroupName= "TrafficStates")] [TemplateVisualState(Name = "Yellow", GroupName = "TrafficStates")] [TemplateVisualState(Name = "Red", GroupName= "TrafficStates")] publicpartialclassTrafficLightControl : UserControl { privatevoidOnTrafficLightStateChanged(TrafficLighttrafficLight) { switch (trafficLight) { caseTrafficLight.Green: VisualStateManager.GoToState(this, "Green", true); break; caseTrafficLight.Yellow: VisualStateManager.GoToState(this, "Yellow", true); break; caseTrafficLight.Red: VisualStateManager.GoToState(this, "Red", true); break; } } } Steuern von States aus dem Code

  29. Designer Support in Expression Blend

  30. Machen Animationen «natürlicher» Verwendung spezieller EasingKeyFrames die eine EasingFunction verwenden Animation Easing <DoubleAnimationUsingKeyFrames… > <DoubleKeyFrameKeyTime="0:0:3" Value="370“ /> </DoubleAnimationUsingKeyFrames> <DoubleAnimationUsingKeyFrames… > <EasingDoubleKeyFrameKeyTime="0:0:3" Value="370"> <EasingDoubleKeyFrame.EasingFunction> <BounceEaseEasingMode="EaseOut"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> </DoubleAnimationUsingKeyFrames>

  31. WPF 4.0 bringt bereits viele EasingFunctions mit Animation Easing Functions Demo

  32. Expression Blend 4 bietet eine sehr konfortable Unterstützung für Animation Easing Animation Easing in Expression Blend

  33. classCoolEasingFunction : EasingFunctionBase { protectedoverridedoubleEaseInCore(doublenormalizedTime) { returnMath.Abs(Math.Sin(normalizedTime* Math.PI* 2)) * normalizedTime; } protectedoverrideFreezableCreateInstanceCore() { returnnewCoolEasingFunction(); } } Eigene Easing Functions implementieren

  34. Schrift in WPF

  35. Kleine Zeichen sind schlecht lesbar Schrift wird beim Animieren unscharf Sobald Transparenz verwendet wird, steht kein ClearType zur Verfügung Es gibt keine Optionen, um das zu steuern Probleme mit Schrift in .NET 3.5

  36. Techniken für mehr Lesbarkeit von Schrift Ohne Tricks Anti-Aliasing Sub-Pixel Rendering Font-Hinting

  37. TextOptions.TextFormattingMode=IdealIdeale Position der Buchstaben (Default) TextOptions.TextFormattingMode=DisplayBuchstaben auf Pixel schieben TextFormattingMode

  38. Text wird während Animation unscharf Dies wurde für langsame Animationen gemacht. Font-Hinting wird in dieser Zeit ausgeschaltet TextOptions.TextHintingMode=AutoWie in .NET 3.5. Text scharf, beim Animieren unscharf TextOptions.TextHintingMode=FixedTextFont-Hinting ist immer aktiv TextOptions.TextHintingMode=AnimatedTextFont-Hinting ist immer ausgeschaltet TextHintingMode

  39. TextRendering Mode Aliased GrayScale ClearType <TextBlock TextOptions.TextRenderingMode=Auto />

  40. ClearType steht für IRTs nicht zur Verfügung: DrawingBrush VisualBrush Effects Opacity oder OpacityMask ViewPort2DVisual3D Layered Windows (transparent) Grund dafür ist eine Limitation von DirectX In .NET 4.0 kann man der Rendering Engine einen Tipp geben: RenderingOptions.ClearTypeHint=Enabled ClearTypeHint

  41. Sprachen: Deutsch, Englisch, Französisch, Spanisch In WPF4 können zusätzliche Wörter hinzugefügt werden. Eigene Spell-Check Dictionaries <TextBoxSpellCheck.IsEnabled="True" Language="en-US" /> <TextBoxSpellCheck.IsEnabled="True" Language="en-US" > <SpellCheck.CustomDictionaries> <sys:Uri>C:\Temp\TechDays.lex</sys:Uri> </SpellCheck.CustomDictionaries> </TextBox> TechDays TechDays.lex

  42. Runs unterstützten nun {Bindings} für den Text Bindable Runs <TextBlockTextWrapping="Wrap" Margin="8"> <Run Text="HerzlichWillkommen," /> <Run Text="{Binding Name}" /> <Run Text="zu den" /> <Run Text="{Binding Event}" /> </TextBlock>

  43. Grafik & Rendering

  44. Schnellere Image-Skalierung (Fant -> bi-linear) BitmapEffects sind jetzt no-ops Keine Hardware Unterstützung mehr für DirectX 7/8 Neue Definition für «Rendering Tier 1» Pixel Shader 2.0 Support und 60 Mbyte Video RAM Breaking Changes im Bereich Rendering

  45. Images und Geometries werden unscharf dargestellt, wenn die Ecken nicht auf exakten Pixeln liegen SnapToDevicePixels hilft nicht immer, da es nur die Positionändert, nicht die Grösse Unscharfe Elemente in WPF

  46. Es ist eine Layoutfunktion, keine Grafikfunktion Ändert Position und Grösse, so dass die Elemene auf exakten Pixel Positionen liegen Wird vererbt, deshalb auf dem Root Element setzen Kompatibel zur Silverlight 4.0 API Layout Rounding Demo <RectangleUseLayoutRounding="True" Canvas.Left="11.11"Canvas.Top="11.11" Width="20.22" Height="30.33" />

  47. Kein Software fallback, da viel Komplexer 2.0 -> 65 Instructions 3.0 -> 65535 Instructions Würde in Software viel zu lange rechnen! Expression Blend liefert 16 PixelShader Effects mit Pixel Shaders 3.0 Support

  48. Das Rastern von Vektor Grafiken nach Bitmaps ist aufwändig und langsam Caching eines VisualTrees in ein Bitmap steigert die Rendering Performance erheblich Nachteile: Braucht mehr Video Memory Effects können nicht gecached werden Der ganze Sub-Tree muss neu gezeichnet werden Cached Composition <Canvas.CacheMode> <BitmapCacheRenderAtScale="4" EnableClearType="True" SnapsToDevicePixels="True" /> </Canvas.CacheMode>

  49. Selection- and Caret-Brush Selection Brush Caret Brush <TextBoxSelectionOpacity="0.4"> <TextBox.SelectionBrush> <LinearGradientBrush> <GradientStop Offset="0" Color="Green" /> <GradientStop Offset="1" Color="Blue" /> </LinearGradientBrush> </TextBox.SelectionBrush> </TextBox> <TextBoxCaretBrush="Red" />

  50. Data Binding

More Related