Silverlight - Tipps & Tricks für Fortgeschrittene

  • View
    3.171

  • Download
    3

Embed Size (px)

DESCRIPTION

Slides zum gleichnamigen Vortrag auf der WebTech Conference 2009 (16.11.2009 - 17h15)

Text of Silverlight - Tipps & Tricks für Fortgeschrittene

  • 1. Silverlight Tipp & Tricks fr Fortgeschrittene Sebastian Schmitt & Andr Wussow, SnipClip

2. Agenda (1)

  • Kurze Vorstellung von SnipClip
  • Stolpersteine:
    • Namespace-nderung
    • Web-Service-Aufrufe
    • TextBox-Bug
    • berlappende HTML-Elemente
    • Skalierung im Fullscreen-Modus
    • Button-Fokus im Fullscreen-Modus

Sebastian Schmitt & Andr Wussow, SnipClip 3. Agenda (2)

  • Tipps & Tricks:
    • Zentrale Style-Vorgaben
    • Dynamisches Nachladen
    • Screenshots mit Crossdomain-Bildern
    • JavaScript Interaktion
    • Navigation Framework
    • Perspective 3D & PixelShader
    • Out-of-Browser

Sebastian Schmitt & Andr Wussow, SnipClip 4. Kurze Vorstellung von SnipClip Sebastian Schmitt & Andr Wussow, SnipClip 5. Stolpersteine 6. Namespace-nderung

  • Problem: Bei Namespace-nderung in VS 2008 erhlt man eine irrefhrende Ausnahme: Ungltige oder nicht wohlgeformte Anwendung. berprfen Sie das Manifest.

Sebastian Schmitt & Andr Wussow, SnipClip

  • Lsung: Eigenschaften des ProjektsSilverlight-TabDrop-Down-MenStartup objectffnen und den (einzigen) Eintrag neu auswhlen

7. Web-Service-Aufrufe

  • Problem: Bei Aufruf eines Web Services (bzw. generell bei Crossdomain-Aufrufen) erhlt man eineCommunicationException

Sebastian Schmitt & Andr Wussow, SnipClip

  • Lsung: Dieclientaccesspolicy.xmloder diecrossdomain.xmlmssen im Root-Verzeichnis des Web Services liegen und fr den Client sichtbar sein (Infos: http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx)

8. TextBox-Bug

  • Problem: MouseLeftButtonDown -Event funktioniert seit dem Release von Silverlight 2.0 nicht mehr
  • Lsung: StattdessenGotFocus -Event verwenden

Sebastian Schmitt & Andr Wussow, SnipClip 9. HTML-berlappung Sebastian Schmitt & Andr Wussow, SnipClip 10. HTML-berlappung

  • Lsung: Bei den Parametern des Silverlight-Controlshinzufgen: Silverlight luft nicht mehr in eigenem Fenster

Sebastian Schmitt & Andr Wussow, SnipClip

  • Problem:Wenn ein Silverlight-Control in eine HTML-Seite eingebettet wird, kann es nicht von anderen HTML-Elementen berlagert werden (z.B. Facebook-Mens)

11. HTML-berlappung Sebastian Schmitt & Andr Wussow, SnipClip 12. Fullscreen-Skalierung

  • Problem: UserControls werden im Fullscreen-Modus verschoben
  • Lsung:
    • Hhe und Breite im UserControl undefiniert lassen
    • Das VerticalAlignmentund dasHorizontalAlignmentdes obersten LayoutRoots aufCenterund denRenderTransformOriginaufPoint(0.5,0.5)setzen
    • Den obersten LayoutRoot ber eineScaleTransformskalieren

Sebastian Schmitt & Andr Wussow, SnipClip 13. Button-Fokus im Fullscreen

  • Problem: Beim Wechsel in den Fullscreen-Modus bleibt der Fokus auf dem Fullscreen-Button wenn der Fullscreen-Modus wieder verlassen wird, liegt der Fokus flschlicherweise immer noch auf dem Button

Sebastian Schmitt & Andr Wussow, SnipClip

  • Lsung: VisualStateManager.GoToState (EnterFullscreenButton, Normal, false); funktioniert allerdings nur dann, wenn der Mauszeiger sich nach Verlassen des Fullscreen-Modus innerhalb der Silverlight-Anwendung befindet

14. Tipps & Tricks 15. Zentrale Style-Vorgaben

  • Problem: In UserControls (z.B. Dialogen) sollen optische Vorgaben wiederverwendet werden, weil ansonsten der XAML-Code schwer zu warten ist und unntig aufgeblht wird
  • Lsung: Optische Vorgaben werden zentral in den Ressourcen derApp.xamlgespeichert und knnen ber {StaticResource RedGradient} erreicht werden

Sebastian Schmitt & Andr Wussow, SnipClip 16. Dynamisches Nachladen (1)

  • Problem: Wenn eine komplexe Anwendung aus vielen UserControls besteht, bentigt sie bei erstmaligem Laden sehr lange

Sebastian Schmitt & Andr Wussow, SnipClip

  • Lsung:
    • UserControls dynamisch nachladen
    • Dabei besser SilverlightApplication Template zur Auslagerung verwenden (anstatt SilverlightLibrary)
    • Vorteile: zentraleApp.xamlfr Style-Vorgaben und XAP-Komprimierung der DLLs

17. Dynamisches Nachladen (2)

  • Vorgehensweise:
    • UserControls in neue SilverlightApplication auslagern (z.B.Dialogs.xap )
    • Zentrale Style-Informationen aus der altenApp.xamlin die neueApp.xamlkopieren
    • Zur Laufzeit dieDialogs.xapnachladen und aus derenApplicationManifest.xamldie enthaltenen DLLs per LINQ ermitteln
    • berReferenzen Eigenschaften Copy Local = Truekann man die DLLs festlegen, welche in derDialogs.xapabgelegt werden

Sebastian Schmitt & Andr Wussow, SnipClip 18. Crossdomain-Screenshots Sebastian Schmitt & Andr Wussow, SnipClip

  • Problem: Wenn man in Silverlight 3 einen Screenshot der Anwendung viaWriteableBitmap -Klasse macht, werden Bilder, welche von einer anderen Domain geladen wurden, aus Sicherheitsgrnden ignoriert
  • Lsung:
    • Bilder imIsolatedStoragezwischenspeichern und erneut daraus laden
    • Erst danach den Screenshot anfertigen

19. JavaScript Interaktion

  • Bentigt bei Integration div. APIs
    • z.B.: SocialNetworks (Facebook JS, OpenSocial, )
  • Silverlight -> JavaScript viaScriptObject
  • JavaScript > Silverlight viaScriptableType&ScriptableMember

Sebastian Schmitt & Andr Wussow, SnipClip 20. Navigation Framework

  • Ermglicht das komfortable Navigieren zwischen einzelnen Seiten
  • Vollstndige Integration in die Browser-Navigation (vor, zurck)
  • MVC-Prinzip:
    • Frame bernimmt Validierung und stellt Container dar
    • Page ist die eigentliche Seite als UserControl
  • DeepLinking bernimmt eindeutige Identifikation der einzelnen Ressourcen (Pages)
  • UriMapper erledigt Url Rewriting und sorgt fr friendly Urls

Sebastian Schmitt & Andr Wussow, SnipClip 21. Navigation Framework

  • Projekt-Vorlage Silverlight Navigation Application

Sebastian Schmitt & Andr Wussow, SnipClip 22. Perspective 3D & Pixel Shader

  • Shader Effekte (bzw. PixelShader) erlauben pixelgenaue Manipulation gerenderter UI-Elemente
  • Vorgefertigte Effekte (Blur, DropShadow)
  • Eigene Effekte mglich via HLS ( High Level Shader Language )
  • Normal auf GPU ausgefhrt, in Silverlight via Software Algorithmus
  • WPF PixelShader Effects Library(http://www.codeplex.com/wpffx)
    • Bietet u.a.BandedSwirl, ColorKeyAlpha, ColorTone, ContrastAdjust uvm.
  • Perspective 3D untersttzt das Anordnen von Elementen auf 3D-Ebene

Sebastian Schmitt & Andr Wussow, SnipClip 23. Out-of-Browser

  • Silverlight 3 bietet nun die Installation auf den Desktop an
  • Silverlight Applikationen laufen eigenstndig ohne Browser
  • Web Service Kommunikation z.B. nach wie vor mglich.
  • Automatische Aktualisierung

Sebastian Schmitt & Andr Wussow, SnipClip 24. Kontaktdaten

  • E-Mail:
  • [email_address]
  • [email_address]
  • Blog: www.paidcontentisback.com
  • Homepage: www.snipclip.com
  • Quellcode: www.snipclip.com/webtech09-tipps.zip