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.526 Aufrufe

Veröffentlicht am

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

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

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

Keine Downloads
Aufrufe
Aufrufe insgesamt
3.526
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
35
Aktionen
Geteilt
0
Downloads
2
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • Social Game auf Facebook und MySpace Sammelspaß nach dem Vorbild der erfolgreichen Panini-Stickeralben Nutzer sammeln Videoschnipsel in vorgegebenen Alben, tauschen und wetteifern mit ihren Freunden
  • 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>

    ×