Silverlight - Tipps & Tricks für Fortgeschrittene

  • Published on
    24-May-2015

  • View
    3.171

  • Download
    3

Embed Size (px)

DESCRIPTION

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

Transcript

<ul><li> 1. Silverlight Tipp &amp; Tricks fr Fortgeschrittene Sebastian Schmitt &amp; Andr Wussow, SnipClip</li></ul> <p> 2. Agenda (1) </p> <ul><li>Kurze Vorstellung von SnipClip </li></ul> <ul><li>Stolpersteine: </li></ul> <ul><li><ul><li>Namespace-nderung </li></ul></li></ul> <ul><li><ul><li>Web-Service-Aufrufe </li></ul></li></ul> <ul><li><ul><li>TextBox-Bug </li></ul></li></ul> <ul><li><ul><li>berlappende HTML-Elemente </li></ul></li></ul> <ul><li><ul><li>Skalierung im Fullscreen-Modus </li></ul></li></ul> <ul><li><ul><li>Button-Fokus im Fullscreen-Modus </li></ul></li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 3. Agenda (2) </p> <ul><li>Tipps &amp; Tricks: </li></ul> <ul><li><ul><li>Zentrale Style-Vorgaben </li></ul></li></ul> <ul><li><ul><li>Dynamisches Nachladen </li></ul></li></ul> <ul><li><ul><li>Screenshots mit Crossdomain-Bildern </li></ul></li></ul> <ul><li><ul><li>JavaScript Interaktion </li></ul></li></ul> <ul><li><ul><li>Navigation Framework </li></ul></li></ul> <ul><li><ul><li>Perspective 3D &amp; PixelShader </li></ul></li></ul> <ul><li><ul><li>Out-of-Browser </li></ul></li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 4. Kurze Vorstellung von SnipClip Sebastian Schmitt &amp; Andr Wussow, SnipClip 5. Stolpersteine 6. Namespace-nderung </p> <ul><li>Problem: Bei Namespace-nderung in VS 2008 erhlt man eine irrefhrende Ausnahme: Ungltige oder nicht wohlgeformte Anwendung. berprfen Sie das Manifest. </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip </p> <ul><li>Lsung: Eigenschaften des ProjektsSilverlight-TabDrop-Down-MenStartup objectffnen und den (einzigen) Eintrag neu auswhlen </li></ul> <p> 7. Web-Service-Aufrufe </p> <ul><li>Problem: Bei Aufruf eines Web Services (bzw. generell bei Crossdomain-Aufrufen) erhlt man eineCommunicationException </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip </p> <ul><li>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) </li></ul> <p> 8. TextBox-Bug </p> <ul><li>Problem: MouseLeftButtonDown -Event funktioniert seit dem Release von Silverlight 2.0 nicht mehr </li></ul> <ul><li>Lsung: StattdessenGotFocus -Event verwenden </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 9. HTML-berlappung Sebastian Schmitt &amp; Andr Wussow, SnipClip 10. HTML-berlappung </p> <ul><li>Lsung: Bei den Parametern des Silverlight-Controlshinzufgen: Silverlight luft nicht mehr in eigenem Fenster </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip </p> <ul><li>Problem:Wenn ein Silverlight-Control in eine HTML-Seite eingebettet wird, kann es nicht von anderen HTML-Elementen berlagert werden (z.B. Facebook-Mens) </li></ul> <p> 11. HTML-berlappung Sebastian Schmitt &amp; Andr Wussow, SnipClip 12. Fullscreen-Skalierung </p> <ul><li>Problem: UserControls werden im Fullscreen-Modus verschoben </li></ul> <ul><li>Lsung: </li></ul> <ul><li><ul><li>Hhe und Breite im UserControl undefiniert lassen </li></ul></li></ul> <ul><li><ul><li>Das VerticalAlignmentund dasHorizontalAlignmentdes obersten LayoutRoots aufCenterund denRenderTransformOriginaufPoint(0.5,0.5)setzen </li></ul></li></ul> <ul><li><ul><li>Den obersten LayoutRoot ber eineScaleTransformskalieren </li></ul></li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 13. Button-Fokus im Fullscreen </p> <ul><li>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 </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip </p> <ul><li>Lsung: VisualStateManager.GoToState (EnterFullscreenButton, Normal, false); funktioniert allerdings nur dann, wenn der Mauszeiger sich nach Verlassen des Fullscreen-Modus innerhalb der Silverlight-Anwendung befindet </li></ul> <p> 14. Tipps &amp; Tricks 15. Zentrale Style-Vorgaben </p> <ul><li>Problem: In UserControls (z.B. Dialogen) sollen optische Vorgaben wiederverwendet werden, weil ansonsten der XAML-Code schwer zu warten ist und unntig aufgeblht wird </li></ul> <ul><li>Lsung: Optische Vorgaben werden zentral in den Ressourcen derApp.xamlgespeichert und knnen ber {StaticResource RedGradient} erreicht werden </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 16. Dynamisches Nachladen (1) </p> <ul><li>Problem: Wenn eine komplexe Anwendung aus vielen UserControls besteht, bentigt sie bei erstmaligem Laden sehr lange </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip </p> <ul><li>Lsung: </li></ul> <ul><li><ul><li>UserControls dynamisch nachladen </li></ul></li></ul> <ul><li><ul><li>Dabei besser SilverlightApplication Template zur Auslagerung verwenden (anstatt SilverlightLibrary) </li></ul></li></ul> <ul><li><ul><li>Vorteile: zentraleApp.xamlfr Style-Vorgaben und XAP-Komprimierung der DLLs </li></ul></li></ul> <p> 17. Dynamisches Nachladen (2) </p> <ul><li>Vorgehensweise: </li></ul> <ul><li><ul><li>UserControls in neue SilverlightApplication auslagern (z.B.Dialogs.xap ) </li></ul></li></ul> <ul><li><ul><li>Zentrale Style-Informationen aus der altenApp.xamlin die neueApp.xamlkopieren </li></ul></li></ul> <ul><li><ul><li>Zur Laufzeit dieDialogs.xapnachladen und aus derenApplicationManifest.xamldie enthaltenen DLLs per LINQ ermitteln </li></ul></li></ul> <ul><li><ul><li>berReferenzen Eigenschaften Copy Local = Truekann man die DLLs festlegen, welche in derDialogs.xapabgelegt werden </li></ul></li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 18. Crossdomain-Screenshots Sebastian Schmitt &amp; Andr Wussow, SnipClip </p> <ul><li>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 </li></ul> <ul><li>Lsung: </li></ul> <ul><li><ul><li>Bilder imIsolatedStoragezwischenspeichern und erneut daraus laden </li></ul></li></ul> <ul><li><ul><li>Erst danach den Screenshot anfertigen </li></ul></li></ul> <p> 19. JavaScript Interaktion </p> <ul><li>Bentigt bei Integration div. APIs </li></ul> <ul><li><ul><li>z.B.: SocialNetworks (Facebook JS, OpenSocial, ) </li></ul></li></ul> <ul><li>Silverlight -&gt; JavaScript viaScriptObject </li></ul> <ul><li>JavaScript &gt; Silverlight viaScriptableType&amp;ScriptableMember </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 20. Navigation Framework </p> <ul><li>Ermglicht das komfortable Navigieren zwischen einzelnen Seiten </li></ul> <ul><li>Vollstndige Integration in die Browser-Navigation (vor, zurck) </li></ul> <ul><li> MVC-Prinzip:</li></ul> <ul><li><ul><li>Frame bernimmt Validierung und stellt Container dar </li></ul></li></ul> <ul><li><ul><li>Page ist die eigentliche Seite als UserControl </li></ul></li></ul> <ul><li>DeepLinking bernimmt eindeutige Identifikation der einzelnen Ressourcen (Pages) </li></ul> <ul><li>UriMapper erledigt Url Rewriting und sorgt fr friendly Urls </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 21. Navigation Framework </p> <ul><li>Projekt-Vorlage Silverlight Navigation Application </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 22. Perspective 3D &amp; Pixel Shader </p> <ul><li>Shader Effekte (bzw. PixelShader) erlauben pixelgenaue Manipulation gerenderter UI-Elemente </li></ul> <ul><li>Vorgefertigte Effekte (Blur, DropShadow) </li></ul> <ul><li>Eigene Effekte mglich via HLS ( High Level Shader Language ) </li></ul> <ul><li>Normal auf GPU ausgefhrt, in Silverlight via Software Algorithmus </li></ul> <ul><li>WPF PixelShader Effects Library(http://www.codeplex.com/wpffx) </li></ul> <ul><li><ul><li>Bietet u.a.BandedSwirl, ColorKeyAlpha, ColorTone, ContrastAdjust uvm.</li></ul></li></ul> <ul><li>Perspective 3D untersttzt das Anordnen von Elementen auf 3D-Ebene </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 23. Out-of-Browser </p> <ul><li>Silverlight 3 bietet nun die Installation auf den Desktop an </li></ul> <ul><li>Silverlight Applikationen laufen eigenstndig ohne Browser </li></ul> <ul><li>Web Service Kommunikation z.B. nach wie vor mglich. </li></ul> <ul><li>Automatische Aktualisierung </li></ul> <p>Sebastian Schmitt &amp; Andr Wussow, SnipClip 24. Kontaktdaten </p> <ul><li>E-Mail: </li></ul> <ul><li>[email_address] </li></ul> <ul><li>[email_address] </li></ul> <ul><li>Blog: www.paidcontentisback.com </li></ul> <ul><li>Homepage: www.snipclip.com </li></ul> <ul><li>Quellcode: www.snipclip.com/webtech09-tipps.zip </li></ul>