Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Nicht vergessen! Ziehung heute Abend 19:45 und 20:45 Uhr Stempel bei Partner holen und einwerfen!

Ähnliche Präsentationen


Präsentation zum Thema: "Nicht vergessen! Ziehung heute Abend 19:45 und 20:45 Uhr Stempel bei Partner holen und einwerfen!"—  Präsentation transkript:

1 Nicht vergessen! Ziehung heute Abend 19:45 und 20:45 Uhr Stempel bei Partner holen und einwerfen!

2 Christian Moser Zühlke AG Die neuen Features im Überblick Windows Presentation Foundation 4.0 Windows Presentation Foundation 4.0

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

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

5 Silverlight 1Silverlight 3 Silverlight 2 Silverlight 4 WPF 3.0 WPF 3.5 WPF 3.5 SP1 WPF 4.0 WPF Toolkit 1 DataGrid DatePicker WPF Toolkit 2 VSM Chart WPFToolkit 3 Theme Pack AutoCompleteBox Accordion SL Toolkit 1 TreeView DockPanel WrapPanel SL Toolkit 2 Accordion TimePicker Chart

6 4.0

7

8 WindowsBase PresentationCore PresentationFramework BAML Engine BAML Engine XAML Type Info WCF / WF XAML Engine XAML Engine XOML Engine XOML Engine XOML Type Info XOML Type Info.NET 3.5 mscorlib System System.Xml.NET 4.0 WindowsBase PresentationCore PresentationFramework WCF / WF BAML Engine BAML Engine System.Xaml.dll XAML Type Info XAML Engine mscorlib System System.Xml

9 Bessere Namensauflösung mit {x:Reference} Voller Support für Generics {x:TypeArguments} Built-in Types, 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}

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

11 Test Test Test Test MembersPropertiesEvents Directives (x:Key) MembersPropertiesEvents ValuesValues Objects Root Object CollectionObjects Collection Xaml Types Xaml Object Umsetzungs- Beschreibung Xaml Types Xaml Object Umsetzungs- Beschreibung

12 EndObject Button EndMember Content Value «Test» StartMember Content StartObject Button Xaml Type Xaml Member while reader.read() XamlXmlReader.Read() XamlObjectWriter.Write()

13 var reader = new XamlXmlReader("loose.xaml"); var writer = new XamlObjectWriter(reader.SchemaContext); while (reader.Read()) { switch (reader.NodeType) { case XamlNodeType.StartObject: if (reader.Type.IsUnknown) continue; break; case XamlNodeType.StartMember: if (reader.Member.IsUnknown) continue; break; } writer.WriteNode(reader); } XAML Node Pump

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

15 XamlDomObject rootObject = XamlDomServices.Load("Window1.xaml"); foreach (XamlDomObject domObject in rootObject.DescendantsAndSelf()) { Console.WriteLine(domObject.Type); } XamlDomObject rootObject = XamlDomServices.Load("Window1.xaml"); foreach (XamlDomObject domObject in rootObject.DescendantsAndSelf()) { Console.WriteLine(domObject.Type); } Vollständige XAML DOM API XAML FxCop integration SilverlightSchemaContext to parse Silverlight XAML using System.Xaml

16 PDC 2008 – XAML PDC XAML Futures Blog von Rob Relyea (XAML Architekt) XAML Toolkit

17

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 Demo

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

20

21 Features Special Ribbon Window All Features of Office 2010 Office 2007 und 2010 Themes Aber: - Release erst nach.NET Etwas MVVM unfreundliche API

22

23 DisabledNormalMouseoverPressed Unfocused Focused

24

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() Control Visual State Manager

26

27 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" Verwendung der GoToStateAction aus System.Windows.Interactivity Demo

28 [TemplateVisualState(Name = "Green", GroupName = "TrafficStates")] [TemplateVisualState(Name = "Yellow", GroupName = "TrafficStates")] [TemplateVisualState(Name = "Red", GroupName = "TrafficStates")] public partial class TrafficLightControl : UserControl { private void OnTrafficLightStateChanged(TrafficLight trafficLight) { switch (trafficLight) { case TrafficLight.Green: VisualStateManager.GoToState(this, "Green", true); break; case TrafficLight.Yellow: VisualStateManager.GoToState(this, "Yellow", true); break; case TrafficLight.Red: VisualStateManager.GoToState(this, "Red", true); break; }

29

30 Machen Animationen «natürlicher» Verwendung spezieller EasingKeyFrames die eine EasingFunction verwenden

31 Demo WPF 4.0 bringt bereits viele EasingFunctions mit

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

33 class CoolEasingFunction : EasingFunctionBase { protected override double EaseInCore(double normalizedTime) { return Math.Abs(Math.Sin(normalizedTime * Math.PI * 2)) * normalizedTime; } protected override Freezable CreateInstanceCore() { return new CoolEasingFunction(); } class CoolEasingFunction : EasingFunctionBase { protected override double EaseInCore(double normalizedTime) { return Math.Abs(Math.Sin(normalizedTime * Math.PI * 2)) * normalizedTime; } protected override Freezable CreateInstanceCore() { return new CoolEasingFunction(); }

34

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

36 Ohne Tricks Anti-Aliasing Sub-Pixel Rendering Font-Hinting

37 TextOptions.TextFormattingMode=Ideal Ideale Position der Buchstaben (Default) TextOptions.TextFormattingMode=Display Buchstaben auf Pixel schieben

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

39 Aliased GrayScale ClearType

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

41 Sprachen: Deutsch, Englisch, Französisch, Spanisch In WPF4 können zusätzliche Wörter hinzugefügt werden. C:\Temp\TechDays.lex C:\Temp\TechDays.lex TechDays TechDays.lex

42 Run s unterstützten nun {Bindings} für den Text

43

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

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

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 Demo

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

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

49 Selection BrushCaret Brush

50

51 InputBinding s sind neu Freezables und unterstützen {Binding} KeyBinding MouseBinding

52 Wird der Wert eines Properties nach dem Setzen geändert, wird er vom {Binding} neu gelesen Demo.NET 3.5 Demo.NET 4.0 public class Customer { private string _name; public string Name { get { return _name; } set { _name = value.ToUpper(); } } public class Customer { private string _name; public string Name { get { return _name; } set { _name = value.ToUpper(); } }

53 Der Aufruf von SetValue() überschreibt den lokalen Wert eines DependencyProperties Ein {Binding} ist im lokalen Wert gespeichert und wird dadurch auch überschrieben SetCurrentValue() überschreibt den Wert nur temporär, ein existierendes {Binding} bleibt dadurch erhalten. Demo

54

55 In.NET 3.5 erschien eine «Trust Not Granted» Exception, wenn man versuchte eine Full-Trust XBAP zu starten. Komplizierter Workaround mit Zertifikaten war möglich In.NET 4.0 erscheint ein Dialog, der die Rechte vom Benutzer anfragt

56 XBAP Applikationen sind oft in einer HTML Seite eingebettet. Es ist deshalb ein normaler Use Case, dass man mit der umgebenden Seite interagieren möchte. In WPF 4 ist dies nun möglich dynamic hostScript = BrowserInteropHelper.HostScript; hostScript.ShowMessage("Hello"); dynamic hostScript = BrowserInteropHelper.HostScript; hostScript.ShowMessage("Hello"); function ShowMessage(text) { alert(text); } function ShowMessage(text) { alert(text); }

57

58 Controls with integrated Touch Support Manipulation & Gesture Events Raw Touch Events

59 Touch.FrameReported += OnFrameReported; void OnFrameReported(object sender, TouchFrameEventArgs e) { var touchPoint = e.GetPrimaryTouchPoint(this); Point position = touchPoint.Position; Size touchSize = touchPoint.Size; } Touch.FrameReported += OnFrameReported; void OnFrameReported(object sender, TouchFrameEventArgs e) { var touchPoint = e.GetPrimaryTouchPoint(this); Point position = touchPoint.Position; Size touchSize = touchPoint.Size; } Touch-Enabled Controls Manipulation & Gesture Events Raw Touch Events

60 Canvas canvas.OnManipulationStarted += (s,e) => e.ManipulationContainer = canvas; private OnManipulationDelta(object sender EventArgs e) { } private OnManipulationDelta(object sender EventArgs e) { } Touch-Enabled Controls Manipulation & Gesture Events Raw Touch Events

61 StartingStartedDelta Inertia Starting DeltaCompleted StartInertia() Touch Down (Initial) Touch Move Touch Up (All) Initialize: Mode Container Pivot Completed()

62 ManipulationInertiaStarting EventArgs PropertiesUnits TranslationBehaviorInitialVelocity1/96 th DIP per millisec DesiredDeceleration1/96 th DIP per millisec^2 DesiredDisplacement1/96 th DIP RotationBehaviorInitialVelocityDegrees per millisec DesiredDecelerationDecrees per millisec^2 DesiredRotationDegrees ExpansionBehaviorInitialVelocity1/96 th DIP per millisec InitialRadius1/96 th DIP DesiredDeceleration1/96 th DIP per millisec^2 DesiredExpansion1/96 th DIPS

63 void OnGesture(object sender, StylusSystemGestureEventArgs e) { switch( e.SystemGesture ) { case SystemGesture.Flick: break; case SystemGesture.Tap: break; } void OnGesture(object sender, StylusSystemGestureEventArgs e) { switch( e.SystemGesture ) { case SystemGesture.Flick: break; case SystemGesture.Tap: break; } Touch-Enabled Controls Manipulation & Gesture Events Raw Touch Events

64

65

66 ScrollViewer unterstützt neu Touch-Bedienung Weitere Control im Surface SDK frei verfügbar SurfaceButtonSurfaceSlider SurfaceInkCanvasSurfaceCheckBox SurfaceListBoxSurfaceScrollbar Surface SDK Download Link Touch-Enabled Controls Manipulation & Gesture Events Raw Touch Events

67 .NET 3.5.NET 4.0

68

69 Thumbnail Thumb Buttons Icon Overlay Progress Indicator

70 Jumplists

72 Nur 30 MByte gross Unterstützt neu alle Plattformen ab Windows XP Redistributable Version verfügbar Kann neu trotz vorhandenem.NET installiert werden neu zwei Einträge unter Software: «Client Profile» und «Extended» (upgrade to full) Bessere Unterstützung in Visual Studio 2010

73 ItemsContainerPattern für den Zugriff auf virtuelle Listen VirtualizedItemPattern zum Materialisieren von virtuellen Elementen SynchronizedInputPattern zum Feststellen, ob ein Event sein ZielElement erreicht hat

74

75 Interaktiver Designer für Silverlight Wizard zum automatischen Erstellen von Formularen von einer Datenquelle Support für mehrere.NET Versionen Einfacheres Layouten Layout von Grid / Control Sizing Editor für Brushes Bessererer Umgang mit App-Level {StaticResources}

76 Kann VisualStudio 2010 und 2008 Solutions öffnen Unterstützung für.NET 4.0 und Silverlight 4.0 Bessere Unterstützung für MVVM Pattern CallMethodAction InvokeCommandAction

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

78 Blog:www.wpftutorial.netwww.wpftutorial.net

79


Herunterladen ppt "Nicht vergessen! Ziehung heute Abend 19:45 und 20:45 Uhr Stempel bei Partner holen und einwerfen!"

Ähnliche Präsentationen


Google-Anzeigen