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

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

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

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

Wettbewerbstalon ausfüllen und

tolle Preise gewinnen!

Nicht vergessen!

Ziehung heute Abend 19:45 und 20:45 Uhr

Stempel bei Partner holen und einwerfen!

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

Christian MoserZühlke [email protected]

Die neuen Features im Überblick

WindowsPresentation Foundation 4.0

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

WPF 4.0 – Viele spannende, neue Funktionen

Windows 7 API

Full Trust XBAPXBAP/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

MultitouchCommon Dialogs

Virtual UI Automation

Visual Studio 2010

Spell-Check Dictionaries

Cached Composition

Animation Easing

Pixel Shaders 3.0

DataBinding für InputBindings

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

Ausbesserung von SchwachpunktenInterne KonsolidierungWünsche der Community abdeckenProduktivität der Entwickler erhöhenBessere Controls für LoB ApplikationenModernisierung der APIBessere Kompatibilität mit Microsoft Silverlight

Ziele von Microsoft für WPF 4.0

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

WPF Roadmap

2007 2008 2009 2010

Silverlight 1 Silverlight 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

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

Nächsten Montag 12 April 2010

4.0

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

<XAML />

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

WindowsBase

Ein neuer XAML Stack für alles

PresentationCore

PresentationFramework

BAMLEngine

XAML Type Info

WCF / WF

XAMLEngine

XOMLEngine

XOMLType Info

.NET 3.5

mscorlib System System.Xml

.NET 4.0

WindowsBase

PresentationCore

PresentationFrameworkWCF / WF

BAMLEngine

System.Xaml.dllXAML Type Info

XAML Engine

mscorlib System System.Xml

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

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

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

Bessere PerformanceViele BugFixesKonsistenz zu WCF und WFAPI zum Laden und Schreiben von XAMLSpäter: Auch für Silverlight

Neuer XAML Parser

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

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>

MembersProperties

EventsDirectives

(x:Key)

ValuesObjectsRoot

ObjectCollection

Xaml TypesXaml <->

ObjectUmsetzungs-Beschreibung

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

XAML Node Stream Processing

EndObjectButton

EndMemberContent

Value«Test»

StartMemberContent

StartObjectButton

XamlType

XamlMember

whilereader.read()

XamlXmlReader.Read()

XamlObjectWriter.Write()

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

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);}

Beispiel «Robust XamlLoader»

XAMLNode Pump

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

...aber

mscorlib System System.Xml

WindowsBase

PresentationCore

PresentationFrameworkWCF / WF

BAMLEngine

System.Xaml.dllXAML Type Info

XAML Engine

VS2010MarkupCompile

r

x x

MarkupCompiler und Designer von VS2010 und Blend unterstützen diese Features noch nicht!

Nur für Loose XAML...

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

XamlDomObject rootObject = XamlDomServices.Load("Window1.xaml");

foreach (XamlDomObject domObject in rootObject.DescendantsAndSelf()) { Console.WriteLine(domObject.Type); }

Neu Verfügbar: Microsoft XAML ToolkitVollständige XAML DOM APIXAML FxCop integration SilverlightSchemaContext to parse Silverlight XAML using System.Xaml

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

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

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

New Controls

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

FeaturesAuto generation of columnsSelection of cells and rowsGrouping and filteringFrozen columnsColumn sorting, reordering and resizing Row detailsFlexible Styling

DataGrid Control

Demo

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

Calendar and DatePicker Control

FeaturesMultiple selection modesBlackout DatesLimitation of displayed date rangeDisplayModes for Month, Year and Decade

Demo

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

Chart Control – WPF Toolkit

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

Ribbon Control – CTP Preview

FeaturesSpecial Ribbon WindowAll Features of Office 2010Office 2007 und 2010 Themes

Aber: - Release erst nach .NET 4.0 - Etwas MVVM unfreundliche API

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

Styling

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

States von Controls

Disabled Normal Mouseover Pressed

Unfocused

Focused

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

<Style TargetType="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

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

Steuert die Zustände und Übergänge von ControlsVerwendet dazu StoryboardsKompatibel zu SilverlightWechsel zwischen States nur aus Code

Internal VisualStateManager.GotoState()External VisualStateManager.GoToElementState()

Der Visual State Manager

Control

VisualState

Manager

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

<Border> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="TrafficStates">

<VisualState x:Name="Red"> <Storyboard> <ColorAnimationUsingKeyFrames …> <EasingColorKeyFrame Value="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

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

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" <local:TrafficLightControl> <i:Interaction.Triggers> <i:EventTrigger EventName="MouseLeftButtonDown" SourceObject="{Binding ElementName=trafficLightControl}"> <ei:GoToStateAction TargetObject="{Binding ElementName=trafficLightControl}" StateName="Yellow"/> </i:EventTrigger> </i:Interaction.Triggers></local:TrafficLightControl>

Steuern von States aus XAMLVerwendung der GoToStateAction aus System.Windows.Interactivity

Demo

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

[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; } }} 

Steuern von States aus dem Code

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

Designer Support in Expression Blend

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

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

Animation Easing

<DoubleAnimationUsingKeyFrames … ><EasingDoubleKeyFrame KeyTime="0:0:3"

Value="370"><EasingDoubleKeyFrame.EasingFunction>

<BounceEase EasingMode="EaseOut"/>

</EasingDoubleKeyFrame.EasingFunction></EasingDoubleKeyFrame>

</DoubleAnimationUsingKeyFrames>

<DoubleAnimationUsingKeyFrames … ><DoubleKeyFrame KeyTime="0:0:3" Value="370“ />

</DoubleAnimationUsingKeyFrames>

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

Animation Easing Functions

Demo

WPF 4.0 bringt bereits viele EasingFunctions mit

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

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

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

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(); }} 

Eigene Easing Functions implementieren

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

Schrift in WPF

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

Kleine Zeichen sind schlecht lesbarSchrift wird beim Animieren unscharfSobald Transparenz verwendet wird, steht kein ClearType zur VerfügungEs gibt keine Optionen, um das zu steuern

Probleme mit Schrift in .NET 3.5

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

Techniken für mehr Lesbarkeit von Schrift

Ohne Tricks

Anti-Aliasing

Sub-Pixel Rendering

Font-Hinting

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

TextOptions.TextFormattingMode=IdealIdeale Position der Buchstaben (Default)

TextOptions.TextFormattingMode=DisplayBuchstaben auf Pixel schieben

TextFormattingMode

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

Text wird während Animation unscharfDies wurde für langsame Animationen gemacht.Font-Hinting wird in dieser Zeit ausgeschaltet

TextOptions.TextHintingMode=AutoWie in .NET 3.5. Text scharf, beim Animieren unscharfTextOptions.TextHintingMode=FixedTextFont-Hinting ist immer aktivTextOptions.TextHintingMode=AnimatedTextFont-Hinting ist immer ausgeschaltet

TextHintingMode

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

<TextBlock TextOptions.TextRenderingMode=Auto />

TextRendering Mode

Aliased

GrayScale

ClearType

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

ClearType steht für IRTs nicht zur Verfügung:DrawingBrushVisualBrush EffectsOpacity oder OpacityMaskViewPort2DVisual3DLayered Windows (transparent)

Grund dafür ist eine Limitation von DirectXIn .NET 4.0 kann man der Rendering Engine einen Tipp geben: RenderingOptions.ClearTypeHint=Enabled

ClearTypeHint

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

Eigene Spell-Check DictionariesSprachen: Deutsch, Englisch, Französisch, SpanischIn WPF4 können zusätzliche Wörter hinzugefügt werden.

<TextBox SpellCheck.IsEnabled="True" Language="en-US" > <SpellCheck.CustomDictionaries> <sys:Uri>C:\Temp\TechDays.lex</sys:Uri> </SpellCheck.CustomDictionaries></TextBox>

<TextBox SpellCheck.IsEnabled="True" Language="en-US" />

TechDays

TechDays.lex

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

Bindable Runs

<TextBlock TextWrapping="Wrap" Margin="8"> <Run Text="Herzlich Willkommen," /> <Run Text="{Binding Name}" /> <Run Text="zu den" /> <Run Text="{Binding Event}" /></TextBlock>

Runs unterstützten nun {Bindings} für den Text

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

Grafik & Rendering

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

Schnellere Image-Skalierung (Fant -> bi-linear)BitmapEffects sind jetzt no-opsKeine Hardware Unterstützung mehr für DirectX 7/8Neue Definition für «Rendering Tier 1»

Pixel Shader 2.0 Support und 60 Mbyte Video RAM

Breaking Changes im Bereich Rendering

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

Images und Geometries werden unscharf dargestellt, wenn die Ecken nicht auf exakten Pixeln liegenSnapToDevicePixels hilft nicht immer, da es nur die Position ändert, nicht die Grösse

Unscharfe Elemente in WPF

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

Es ist eine Layoutfunktion, keine GrafikfunktionÄndert Position und Grösse, so dass die Elemene auf exakten Pixel Positionen liegenWird vererbt, deshalb auf dem Root Element setzenKompatibel zur Silverlight 4.0 API

Layout Rounding Demo

<Rectangle UseLayoutRounding="True" Canvas.Left="11.11" Canvas.Top="11.11" Width="20.22" Height="30.33" />

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

Kein Software fallback, da viel Komplexer2.0 -> 65 Instructions 3.0 -> 65535 InstructionsWürde in Software viel zu lange rechnen!

Expression Blend liefert 16 PixelShader Effects mit

Pixel Shaders 3.0 Support

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

Das Rastern von Vektor Grafiken nach Bitmaps ist aufwändig und langsamCaching eines VisualTrees in ein Bitmap steigert die Rendering Performance erheblichNachteile:

Braucht mehr Video MemoryEffects können nicht gecached werdenDer ganze Sub-Tree muss neu gezeichnet werden

Cached Composition

<Canvas.CacheMode> <BitmapCache RenderAtScale="4" EnableClearType="True" SnapsToDevicePixels="True" /></Canvas.CacheMode>

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

Selection- and Caret-Brush

<TextBox SelectionOpacity="0.4"> <TextBox.SelectionBrush> <LinearGradientBrush> <GradientStop Offset="0" Color="Green" /> <GradientStop Offset="1" Color="Blue" /> </LinearGradientBrush> </TextBox.SelectionBrush></TextBox>

<TextBox CaretBrush="Red" />

Selection Brush Caret Brush

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

Data Binding

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

InputBindings sind neu Freezables und unterstützen {Binding}

KeyBindingMouseBinding

InputBinding unterstützt {Binding}

<Window.InputBindings> <KeyBinding Key="F1" Command="{Binding HelpCommand}" /></Window.InputBindings>

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

Wird der Wert eines Properties nach dem Setzen geändert, wird er vom {Binding} neu gelesen

Binding – Value re-read

Demo .NET 3.5

Demo .NET 4.0

<TextBox Text="{Binding Name}" />public class Customer{ private string _name;  public string Name { get { return _name; } set { _name = value.ToUpper(); } }}

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

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

Binding – SetCurrentValue()

Demo

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

XBAP

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

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

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

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

XBAP <-> HTML Interop

dynamic hostScript = BrowserInteropHelper.HostScript;hostScript.ShowMessage("Hello");

function ShowMessage(text){ alert(text);}

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

Multi-Touch

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

Multi-Touch API

Controls with integrated Touch Support

Manipulation & Gesture Events

Raw Touch Events

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

Touch.FrameReported += OnFrameReported;

void OnFrameReported(object sender, TouchFrameEventArgs e)

{ var touchPoint = e.GetPrimaryTouchPoint(this); Point position = touchPoint.Position; Size touchSize = touchPoint.Size;}

Raw Touch Events Touch-Enabled Controls

Manipulation & Gesture Events

Raw Touch Events

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

Manipulation Events

Canvas canvas.OnManipulationStarted += (s,e) => e.ManipulationContainer = canvas;

<Image IsManipulationEnabled=True />

private OnManipulationDelta(object sender EventArgs e){}

Touch-Enabled Controls

Manipulation & Gesture Events

Raw Touch Events

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

Manipulation Events

Starting Started Delta Inertia Starting Delta Complete

d

StartInertia() StartInertia()

Touch Down

(Initial)

Touch Move

Touch Up (All)

Initialize:• Mode• Container

• PivotCompleted()

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

Manipulation Events - Intertia

ManipulationInertiaStartingEventArgs

Properties Units

TranslationBehavior InitialVelocity 1/96th DIP per millisec

DesiredDeceleration 1/96th DIP per millisec^2

DesiredDisplacement 1/96th DIP

RotationBehavior InitialVelocity Degrees per millisec

DesiredDeceleration Decrees per millisec^2

DesiredRotation Degrees

ExpansionBehavior InitialVelocity 1/96th DIP per millisec

InitialRadius 1/96th DIP

DesiredDeceleration 1/96th DIP per millisec^2

DesiredExpansion 1/96th DIPS

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

Gesture Events

void OnGesture(object sender, StylusSystemGestureEventArgs e){ switch( e.SystemGesture ) { case SystemGesture.Flick: break; case SystemGesture.Tap: break; }}

<Canvas StylusSystemGesture="OnGesture" />

Touch-Enabled Controls

Manipulation & Gesture Events

Raw Touch Events

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

Windows 7 Gestures

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

Windows 7 Gestures II

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

ScrollViewer unterstützt neu Touch-Bedienung

Weitere Control im Surface SDK frei verfügbarSurfaceButton SurfaceSliderSurfaceInkCanvas SurfaceCheckBoxSurfaceListBox SurfaceScrollbar

Touch-Enabled Controls

<ScrollViewer PanningMode="Both" PanningDeceleration="10" PanningRatio="20" />

Surface SDK Download Link

Touch-Enabled Controls

Manipulation & Gesture Events

Raw Touch Events

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

Neue Common Dialogs unter Vista/Win7

.NET 3.5 .NET 4.0

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

Windows 7 Taskbar Integration

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

Task Bar Features

<Window.TaskbarItemInfo> <TaskbarItemInfo Overlay="images/stop.png" ThumbnailClipMargin="8" ProgressState="Normal" ProgressValue="50" Description="Taskbar Item Info Sample"> <TaskbarItemInfo.ThumbButtonInfos> <ThumbButtonInfoCollection> <ThumbButtonInfo DismissWhenClicked="False" Command="MediaCommands.Play" Description="Play" ImageSource="play.png"/> </ThumbButtonInfoCollection> </TaskbarItemInfo.ThumbButtonInfos> </TaskbarItemInfo></Window.TaskbarItemInfo>

ThumbnailThumb ButtonsIcon OverlayProgress Indicator

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

Jumplists

Task Bar Features II

<Application xmlns:s="clr-namespace:System.Windows.Shell;assembly=…"> <s:JumpList.JumpList> <s:JumpList ShowRecentCategory="True" ShowFrequentCategory="True"> <s:JumpTask Title="Notepad" Description="Launch Notepad" ApplicationPath="notepad.exe" WorkingDirectory="C:\temp" Arguments="ReleaseNotes.txt" IconResourcePath="notepad.exe"/> </s:JumpList> </s:JumpList.JumpList></Application>

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

Deployment & Testing

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

Nur 30 MByte grossUnterstützt neu alle Plattformen ab Windows XPRedistributable Version verfügbarKann 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

New .NET 4.0 Client Profile

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

Verbesserte UIAutomation

ItemsContainerPattern für den Zugriff auf virtuelle ListenVirtualizedItemPattern zum Materialisieren von virtuellen ElementenSynchronizedInputPattern zum Feststellen, ob ein Event sein ZielElement erreicht hat

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

Visual Studio & Blend

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

Interaktiver Designer für SilverlightWizard zum automatischen Erstellen von Formularen von einer DatenquelleSupport für mehrere .NET VersionenEinfacheres Layouten Layout von Grid / Control SizingEditor für BrushesBessererer Umgang mit App-Level {StaticResources}

Visual Studio 2010 – Cider Designer

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

Kann VisualStudio 2010 und 2008 Solutions öffnenUnterstützung für .NET 4.0 und Silverlight 4.0Bessere Unterstützung für MVVM Pattern

CallMethodActionInvokeCommandAction

Expression Blend 4 Preview

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

WPF 4.0 – Viele spannende, neue Funktionen

Windows 7 API

Full Trust XBAPXBAP/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

MultitouchCommon Dialogs

Virtual UI Automation

Visual Studio 2010

Spell-Check Dictionaries

Cached Composition

Animation Easing

Pixel Shaders 3.0

DataBinding für InputBindings

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

Weitere InformationenBlog: www.wpftutorial.netMail: [email protected]: @moser_christian

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