Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Silverlight Tipp & Tricks für Fortgeschrittene Sebastian Schmitt & André Wussow, SnipClip
Agenda (1) <ul><li>Kurze Vorstellung von SnipClip </li></ul><ul><li>Stolpersteine: </li></ul><ul><ul><li>Namespace-Änderun...
Agenda (2) <ul><li>Tipps & Tricks: </li></ul><ul><ul><li>Zentrale Style-Vorgaben </li></ul></ul><ul><ul><li>Dynamisches Na...
Kurze Vorstellung von SnipClip Sebastian Schmitt & André Wussow, SnipClip
Stolpersteine
Namespace-Änderung <ul><li>Problem: Bei Namespace-Änderung in VS 2008 erhält man eine irreführende Ausnahme: „Ungültige od...
Web-Service-Aufrufe <ul><li>Problem: Bei Aufruf eines Web Services (bzw. generell bei Crossdomain-Aufrufen) erhält man ein...
TextBox-Bug <ul><li>Problem: MouseLeftButtonDown -Event funktioniert seit dem Release von Silverlight 2.0 nicht mehr </li>...
HTML-Überlappung Sebastian Schmitt & André Wussow, SnipClip
HTML-Überlappung <ul><li>Lösung: Bei den Parametern des Silverlight-Controls  hinzufügen: <param name=&quot;windowless&quo...
HTML-Überlappung Sebastian Schmitt & André Wussow, SnipClip
Fullscreen-Skalierung <ul><li>Problem: UserControls werden im Fullscreen-Modus verschoben </li></ul><ul><li>Lösung: </li><...
Button-Fokus im Fullscreen <ul><li>Problem: Beim Wechsel in den Fullscreen-Modus bleibt der Fokus auf dem Fullscreen-Butto...
Tipps & Tricks
Zentrale Style-Vorgaben <ul><li>Problem: In UserControls (z.B. Dialogen) sollen optische Vorgaben wiederverwendet werden, ...
Dynamisches Nachladen (1) <ul><li>Problem: Wenn eine komplexe Anwendung aus vielen UserControls besteht, benötigt sie bei ...
Dynamisches Nachladen (2) <ul><li>Vorgehensweise: </li></ul><ul><ul><li>UserControls in neue SilverlightApplication auslag...
Crossdomain-Screenshots Sebastian Schmitt & André Wussow, SnipClip <ul><li>Problem: Wenn man in Silverlight 3 einen Screen...
JavaScript Interaktion <ul><li>Benötigt bei Integration div. API‘s </li></ul><ul><ul><li>z.B.: SocialNetworks (Facebook JS...
Navigation Framework <ul><li>Ermöglicht das komfortable Navigieren zwischen einzelnen Seiten </li></ul><ul><li>Vollständig...
Navigation Framework <ul><li>Projekt-Vorlage „Silverlight Navigation Application </li></ul>Sebastian Schmitt & André Wusso...
Perspective 3D & Pixel Shader <ul><li>Shader Effekte (bzw. PixelShader) erlauben pixelgenaue Manipulation gerenderter UI-E...
Out-of-Browser <ul><li>Silverlight 3 bietet nun die Installation auf den Desktop an </li></ul><ul><li>Silverlight Applikat...
Kontaktdaten <ul><li>E-Mail: </li></ul><ul><li>[email_address] </li></ul><ul><li>[email_address] </li></ul><ul><li>Blog: w...
Nächste SlideShare
Wird geladen in …5
×

Silverlight - Tipps & Tricks für Fortgeschrittene

3.625 Aufrufe

Veröffentlicht am

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

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Silverlight - Tipps & Tricks für Fortgeschrittene

  1. 1. Silverlight Tipp & Tricks für Fortgeschrittene Sebastian Schmitt & André Wussow, SnipClip
  2. 2. Agenda (1) <ul><li>Kurze Vorstellung von SnipClip </li></ul><ul><li>Stolpersteine: </li></ul><ul><ul><li>Namespace-Änderung </li></ul></ul><ul><ul><li>Web-Service-Aufrufe </li></ul></ul><ul><ul><li>TextBox-Bug </li></ul></ul><ul><ul><li>Überlappende HTML-Elemente </li></ul></ul><ul><ul><li>Skalierung im Fullscreen-Modus </li></ul></ul><ul><ul><li>Button-Fokus im Fullscreen-Modus </li></ul></ul>Sebastian Schmitt & André Wussow, SnipClip
  3. 3. Agenda (2) <ul><li>Tipps & Tricks: </li></ul><ul><ul><li>Zentrale Style-Vorgaben </li></ul></ul><ul><ul><li>Dynamisches Nachladen </li></ul></ul><ul><ul><li>Screenshots mit Crossdomain-Bildern </li></ul></ul><ul><ul><li>JavaScript Interaktion </li></ul></ul><ul><ul><li>Navigation Framework </li></ul></ul><ul><ul><li>Perspective 3D & PixelShader </li></ul></ul><ul><ul><li>Out-of-Browser </li></ul></ul>Sebastian Schmitt & André Wussow, SnipClip
  4. 4. Kurze Vorstellung von SnipClip Sebastian Schmitt & André Wussow, SnipClip
  5. 5. Stolpersteine
  6. 6. Namespace-Änderung <ul><li>Problem: Bei Namespace-Änderung in VS 2008 erhält man eine irreführende Ausnahme: „Ungültige oder nicht wohlgeformte Anwendung. Überprüfen Sie das Manifest.“ </li></ul>Sebastian Schmitt & André Wussow, SnipClip <ul><li>Lösung: Eigenschaften des Projekts  Silverlight-Tab  Drop-Down-Menü Startup object öffnen und den (einzigen) Eintrag neu auswählen </li></ul>
  7. 7. Web-Service-Aufrufe <ul><li>Problem: Bei Aufruf eines Web Services (bzw. generell bei Crossdomain-Aufrufen) erhält man eine CommunicationException </li></ul>Sebastian Schmitt & André Wussow, SnipClip <ul><li>Lösung: Die clientaccesspolicy.xml oder die crossdomain.xml müssen im Root-Verzeichnis des Web Services liegen und für den Client sichtbar sein (Infos: http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx) </li></ul>
  8. 8. TextBox-Bug <ul><li>Problem: MouseLeftButtonDown -Event funktioniert seit dem Release von Silverlight 2.0 nicht mehr </li></ul><ul><li>Lösung: Stattdessen GotFocus -Event verwenden </li></ul>Sebastian Schmitt & André Wussow, SnipClip
  9. 9. HTML-Überlappung Sebastian Schmitt & André Wussow, SnipClip
  10. 10. HTML-Überlappung <ul><li>Lösung: Bei den Parametern des Silverlight-Controls hinzufügen: <param name=&quot;windowless&quot; value=&quot;true&quot; />  Silverlight läuft nicht mehr in eigenem Fenster </li></ul>Sebastian Schmitt & André Wussow, SnipClip <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-Menüs) </li></ul>
  11. 11. HTML-Überlappung Sebastian Schmitt & André Wussow, SnipClip
  12. 12. Fullscreen-Skalierung <ul><li>Problem: UserControls werden im Fullscreen-Modus verschoben </li></ul><ul><li>Lösung: </li></ul><ul><ul><li>Höhe und Breite im UserControl undefiniert lassen </li></ul></ul><ul><ul><li>Das VerticalAlignment und das HorizontalAlignment des obersten LayoutRoots auf Center und den RenderTransformOrigin auf Point(0.5,0.5) setzen </li></ul></ul><ul><ul><li>Den obersten LayoutRoot über eine ScaleTransform skalieren </li></ul></ul>Sebastian Schmitt & André Wussow, SnipClip
  13. 13. Button-Fokus im Fullscreen <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 fälschlicherweise immer noch auf dem Button </li></ul>Sebastian Schmitt & André Wussow, SnipClip <ul><li>Lösung: 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>
  14. 14. Tipps & Tricks
  15. 15. Zentrale Style-Vorgaben <ul><li>Problem: In UserControls (z.B. Dialogen) sollen optische Vorgaben wiederverwendet werden, weil ansonsten der XAML-Code schwer zu warten ist und unnötig aufgebläht wird </li></ul><ul><li>Lösung: Optische Vorgaben werden zentral in den Ressourcen der App.xaml gespeichert und können über {StaticResource RedGradient} erreicht werden </li></ul>Sebastian Schmitt & André Wussow, SnipClip
  16. 16. Dynamisches Nachladen (1) <ul><li>Problem: Wenn eine komplexe Anwendung aus vielen UserControls besteht, benötigt sie bei erstmaligem Laden sehr lange </li></ul>Sebastian Schmitt & André Wussow, SnipClip <ul><li>Lösung: </li></ul><ul><ul><li>UserControls dynamisch nachladen </li></ul></ul><ul><ul><li>Dabei besser SilverlightApplication Template zur Auslagerung verwenden (anstatt SilverlightLibrary) </li></ul></ul><ul><ul><li>Vorteile: zentrale App.xaml für Style-Vorgaben und XAP-Komprimierung der DLLs </li></ul></ul>
  17. 17. Dynamisches Nachladen (2) <ul><li>Vorgehensweise: </li></ul><ul><ul><li>UserControls in neue SilverlightApplication auslagern (z.B. Dialogs.xap ) </li></ul></ul><ul><ul><li>Zentrale Style-Informationen aus der alten App.xaml in die neue App.xaml kopieren </li></ul></ul><ul><ul><li>Zur Laufzeit die Dialogs.xap nachladen und aus deren ApplicationManifest.xaml die enthaltenen DLLs per LINQ ermitteln </li></ul></ul><ul><ul><li>Über Referenzen  Eigenschaften  Copy Local = True kann man die DLLs festlegen, welche in der Dialogs.xap abgelegt werden </li></ul></ul>Sebastian Schmitt & André Wussow, SnipClip
  18. 18. Crossdomain-Screenshots Sebastian Schmitt & André Wussow, SnipClip <ul><li>Problem: Wenn man in Silverlight 3 einen Screenshot der Anwendung via WriteableBitmap -Klasse macht, werden Bilder, welche von einer anderen Domain geladen wurden, aus Sicherheitsgründen ignoriert </li></ul><ul><li>Lösung: </li></ul><ul><ul><li>Bilder im IsolatedStorage zwischenspeichern und erneut daraus laden </li></ul></ul><ul><ul><li>Erst danach den Screenshot anfertigen </li></ul></ul>
  19. 19. JavaScript Interaktion <ul><li>Benötigt bei Integration div. API‘s </li></ul><ul><ul><li>z.B.: SocialNetworks (Facebook JS, OpenSocial, …) </li></ul></ul><ul><li>Silverlight -> JavaScript via ScriptObject </li></ul><ul><li>JavaScript –> Silverlight via ScriptableType & ScriptableMember </li></ul>Sebastian Schmitt & André Wussow, SnipClip
  20. 20. Navigation Framework <ul><li>Ermöglicht das komfortable Navigieren zwischen einzelnen Seiten </li></ul><ul><li>Vollständige Integration in die Browser-Navigation (vor, zurück) </li></ul><ul><li>„ MVC“-Prinzip: </li></ul><ul><ul><li>Frame übernimmt Validierung und stellt Container dar </li></ul></ul><ul><ul><li>Page ist die eigentliche Seite als UserControl </li></ul></ul><ul><li>DeepLinking übernimmt eindeutige Identifikation der einzelnen Ressourcen (Pages) </li></ul><ul><li>UriMapper erledigt „Url Rewriting“ und sorgt für friendly Urls </li></ul>Sebastian Schmitt & André Wussow, SnipClip
  21. 21. Navigation Framework <ul><li>Projekt-Vorlage „Silverlight Navigation Application </li></ul>Sebastian Schmitt & André Wussow, SnipClip
  22. 22. Perspective 3D & Pixel Shader <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 möglich via HLS ( High Level Shader Language ) </li></ul><ul><li>Normal auf GPU ausgeführt, in Silverlight via Software Algorithmus </li></ul><ul><li>WPF PixelShader Effects Library (http://www.codeplex.com/wpffx) </li></ul><ul><ul><li>Bietet u.a. BandedSwirl, ColorKeyAlpha, ColorTone, ContrastAdjust uvm. </li></ul></ul><ul><li>Perspective 3D unterstützt das Anordnen von Elementen auf 3D-Ebene </li></ul>Sebastian Schmitt & André Wussow, SnipClip
  23. 23. Out-of-Browser <ul><li>Silverlight 3 bietet nun die Installation auf den Desktop an </li></ul><ul><li>Silverlight Applikationen laufen eigenständig ohne Browser </li></ul><ul><li>Web Service Kommunikation z.B. nach wie vor möglich. </li></ul><ul><li>Automatische Aktualisierung </li></ul>Sebastian Schmitt & André Wussow, SnipClip
  24. 24. Kontaktdaten <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>

×