Inhaltsverzeichnis | 6 |
Geleitwort | 14 |
Vorwort | 16 |
Danksagung | 18 |
Über dieses Buch | 20 |
1 Einführung | 24 |
1.1 Ihr neues Leben mit Silverlight | 24 |
1.1.1 Produktivität | 25 |
1.1.2 Performance | 26 |
1.1.3 Portabilität | 26 |
1.2 Können wir nicht Freunde sein? | 28 |
1.2.1 Die Sichtweise des Entwicklers | 30 |
1.2.2 Die Sichtweise des Designers | 30 |
1.3 XAML | 31 |
1.3.1 Code-Behind | 31 |
1.3.2 Namespaces | 33 |
1.3.3 Compound Properties (komplexe Eigenschaften) | 34 |
1.3.4 Attached Properties (angehängte Eigenschaften) | 35 |
1.4 Mit Blend arbeiten | 35 |
1.5 Zusammenfassung | 44 |
2 In Harmonie mit dem Web | 46 |
2.1 Beziehung zwischen Silverlight und dem HTML-DOM | 46 |
2.1.1 Das HTML Document Object Model | 48 |
2.1.2 Das Silverlight Plug- | 48 |
2.1.3 Das Silverlight-Objektmodell | 49 |
2.2 Erzeugen eines Silverlight Plug-ins | 50 |
2.2.1 Die Silverlight Utility Datei: Silverlight.js | 50 |
2.2.2 Erzeugen einer Instanz des Silverlight-Plug-in | 52 |
2.3 Integration eines Silverlight-Plug-in | 53 |
2.3.1 Beziehung zum HTML-DOM einrichten | 54 |
2.3.2 Initialisieren der Anfangsbedingungen | 56 |
2.3.3 Plug-in-Ereignisse behandeln | 60 |
2.3.4 Initialisierungsparameter senden | 62 |
2.4 Das Silverlight-Applikationsmodell | 64 |
2.4.1 Die Manifestdatei | 64 |
2.4.2 Die Silverlight-Applikation | 65 |
2.4.3 Anwendungsabhängigkeiten | 68 |
2.5 Interaktion mit dem HTML-DOM | 69 |
2.5.1 Verwalten der Webseite mit managed Code | 69 |
2.5.2 Arbeiten mit dem Browserfenster des Users | 73 |
2.5.3 Die Brücke zwischen Skriptcode und managed Code | 76 |
2.6 Zusammenfassung | 80 |
3 Layout und Text | 82 |
3.1 Ein Canvas für Ihre Vorstellungen | 82 |
3.1.1 Den Inhalt eines Canvas anordnen | 83 |
3.1.2 Die Vor- und Nachteile des Canvas | 86 |
3.2 Das StackPanel: der Tiefstapler | 87 |
3.3 Das leistungsfähige Grid | 89 |
3.3.1 Anordnen des Grid-Inhalts | 90 |
3.3.2 Abmessungen verändern | 92 |
3.3.3 Arbeiten mit dem Grid per Programm | 95 |
3.3.4 Anpassen der Zellenumrandungen | 96 |
3.4 Anzeigen von Text | 99 |
3.4.1 Font-Properties | 100 |
3.4.2 Flusskontrolle (Flow control) | 103 |
3.4.3 Texteigenschaften | 104 |
3.4.4 Spacing von Text | 106 |
3.5 UIElement und FrameworkElement | 108 |
3.5.1 Eigenschaften | 108 |
3.5.2 Methoden | 113 |
3.6 Zusammenfassung | 114 |
4 Behandlung von Nutzereingaben | 116 |
4.1 Die Verwendung der Eingabegeräte | 116 |
4.1.1 Die Tastatur | 116 |
4.1.2 Fang die Maus! | 120 |
4.2 Eingabe in Text-Controls | 123 |
4.2.1 Behandlung von einfachem Text | 123 |
4.2.2 Eingabe sensitiver Daten | 126 |
4.3 Button-Controls | 127 |
4.3.1 Der Button | 128 |
4.3.2 Der HyperlinkButton | 129 |
4.3.3 Der RadioButton | 130 |
4.3.4 Die CheckBox | 131 |
4.4 Das ItemsControl | 132 |
4.4.1 Die ListBox | 133 |
4.4.2 Die ComboBox | 135 |
4.4.3 Das TabControl | 136 |
4.5 Datums-Controls | 138 |
4.5.1 Calendar | 139 |
4.5.2 DatePicker | 141 |
4.6 Auswahl aus einem numerischen Bereich | 142 |
4.6.1 Verwendung der ProgressBar | 142 |
4.6.2 Implementieren eines Schiebereglers | 143 |
4.7 Anzeige von Dialogen | 144 |
4.7.1 Das Popup-Control | 144 |
4.7.2 Dateidialog | 146 |
4.8 Sonstige Controls | 148 |
4.8.1 Erzeugen eines Border-Elements | 148 |
4.8.2 Verwendung des InkPresenters | 149 |
4.9 Zusammenfassung | 152 |
5 Datenbindung | 154 |
5.1 Wie Sie Ihre Daten anbinden | 154 |
5.1.1 Syntax der Datenbindung | 155 |
5.1.2 Auswahl des Binding-Modus | 157 |
5.2 Die Datenquelle verstehen | 159 |
5.2.1 Binden an eine Eigenschaft | 159 |
5.2.2 Binden an ein Objekt | 161 |
5.2.3 Binden an eine Collection | 162 |
5.3 Anpassen der Darstellung | 163 |
5.3.1 Konvertieren von Werten während des Bindens | 164 |
5.3.2 Erzeugen von Data-Templates | 166 |
5.4 Das DataGrid | 169 |
5.4.1 Anzeige Ihrer Daten | 169 |
5.4.2 Editieren der Daten im Grid | 175 |
5.4.3 Sortieren von Einträgen | 176 |
5.5 Language Integrated Query (LINQ) | 177 |
5.5.1 Einführung in LINQ | 177 |
5.5.2 LINQ to Objects | 180 |
5.5.3 LINQ to XML | 182 |
5.5.4 Wir LINQen alles zusammen | 185 |
5.6 Zusammenfassung | 186 |
6 Netzwerk und Kommunikation | 188 |
6.1 Vertrauen, Sicherheit und Browser-Beschränkungen | 188 |
6.1.1 Nur eine Frage des Vertrauens | 189 |
6.1.2 Machen Sie Ihre Applikation sicher! | 192 |
6.1.3 Beschränkungen des Browsers | 193 |
6.2 Verbinden mit Datenquellen | 194 |
6.2.1 Verwendung von SOAP-Diensten | 194 |
6.2.2 REST-Services | 199 |
6.3 Die Daten aufbereiten | 203 |
6.3.1 Lesen von POX | 203 |
6.3.2 Konvertieren von JSON | 207 |
6.3.3 Lesezugriff auf Syndicated-Feeds | 209 |
6.4 Einsatz von erweiterten Diensten | 215 |
6.4.1 WCF Service-Erweiterungen | 216 |
6.4.2 WCF-Duplex-Dienste | 217 |
6.4.3 Verbinden mit Sockets | 221 |
6.5 Zusammenfassung | 224 |
7 Digitale Medien | 226 |
7.1 Audio und Video | 226 |
7.1.1 Die Source-Eigenschaft | 227 |
7.1.2 Gemeinsame Eigenschaften | 230 |
7.1.3 Audio spezifisches | 232 |
7.1.4 Video spezifisches | 233 |
7.1.5 Der Lebenszyklus einer Medien-Datei | 234 |
7.2 Playlisten für ein webbasiertes Mixtape | 235 |
7.2.1 Clientseitige Playlisten | 235 |
7.2.2 Verwendung von serverseitigen Playlisten | 238 |
7.3 Interaktive Wiedergabe | 239 |
7.3.1 Kontrolle des Wiedergabestatus | 240 |
7.3.2 Zeitliche Interaktion | 240 |
7.3.3 Vollbild-Modus | 242 |
7.4 Zugriff auf geschützte Inhalte | 243 |
7.4.1 Geschützte Inhalte anfordern | 243 |
7.4.2 PlayReady-Komponenten abrufen | 244 |
7.4.3 Geschützte Inhalte freischalten | 244 |
7.5 Bilder anzeigen | 245 |
7.5.1 Grundlagen | 245 |
7.5.2 Deep-Zoom | 246 |
7.6 Umgang mit freiem Platz | 251 |
7.6.1 Die Stretch-Option None | 252 |
7.6.2 Uniform-Sizing | 253 |
7.6.3 Ausfüllen der Fläche | 254 |
7.6.4 UniformToFill | 254 |
7.7 Zusammenfassung | 255 |
8 Grafikprogrammierung | 256 |
8.1 Die Silverlight-Shapes | 256 |
8.1.1 Eine Linie im Sand | 257 |
8.1.2 Rectangle | 257 |
8.1.3 Die Ellipse | 259 |
8.1.4 Polyline | 259 |
8.1.5 Polygon | 259 |
8.2 Geometry | 260 |
8.2.1 Einfache Geometrien | 261 |
8.2.2 Path-Geometrien | 262 |
8.2.3 Zusammengesetzte Geometrien | 264 |
8.3 Pinsel (Brushes) | 265 |
8.3.1 SolidColorBrush | 265 |
8.3.2 LinearGradientBrush | 266 |
8.3.3 RadialGradientBrush | 268 |
8.3.4 ImageBrush | 270 |
8.3.5 VideoBrush | 271 |
8.4 Transformationen | 272 |
8.4.1 RotateTransform | 272 |
8.4.2 ScaleTransform | 273 |
8.4.3 SkewTransform | 273 |
8.4.4 TranslateTransform | 274 |
8.4.5 TransformGroup | 275 |
8.5 Grafikprogrammierung mit Blend | 275 |
8.6 Zusammenfassung | 284 |
9 Animationen | 286 |
9.1 Animation: Es geht um Zeit | 286 |
9.2 Die Timeline | 287 |
9.2.1 Welche Eigenschaft will ich animieren? | 288 |
9.2.2 Wo beginne ich und wohin soll es gehen? | 290 |
9.2.3 Wie lange soll die Animation laufen? | 292 |
9.3 Das Storyboard | 296 |
9.3.1 Grundlegendes | 296 |
9.3.2 Bestimmen des Ziels | 297 |
9.3.3 Kontrollieren des Storyboards | 299 |
9.3.4 Machen Sie es sich leicht | 300 |
9.4 Key-Framing | 303 |
9.4.1 Interpolation | 305 |
9.4.2 Timing ist alles! | 308 |
9.5 Zusammenfassung | 309 |
10 Bring es in Form! | 310 |
10.1 Ressourcen | 310 |
10.1.1 Deklarative Ressourcen | 310 |
10.1.2 Zugriff auf ungebundene Ressourcen | 314 |
10.1.3 Ressourcen bündeln | 316 |
10.2 Gib den Elementen ihre Form | 318 |
10.2.1 Definieren der Optik | 320 |
10.2.2 Zuordnen der Styles | 322 |
10.3 Templates erzeugen | 323 |
10.3.1 Control-Templates | 323 |
10.3.2 Wiederverwertbare Templates | 328 |
10.4 Visuelle Zustände | 329 |
10.4.1 Wie funktionieren die Komponenten? | 329 |
10.5 Der VisualStateManager | 331 |
10.6 Teile deine Effekte | 335 |
10.7 Zusammenfassung | 337 |
11 Weitere Programmiertechniken | 338 |
11.1 Daten im isolierten Speicher sichern | 338 |
11.1.1 IsolatedStorageFile: Das virtuelle Dateisystem | 339 |
11.1.2 Lesen/Schreiben von Dateien: Die Isolated Storage-Variante | 345 |
11.1.3 Den isolierten Speicherbereich administrieren | 347 |
11.2 Verwendung von XAML zur Laufzeit | 347 |
11.3 Der BackgroundWorker | 349 |
11.3.1 Die Arbeit verrichten | 350 |
11.3.2 Die Oberfläche aktualisieren | 351 |
11.4 Inhalte bei Bedarf abrufen | 355 |
11.4.1 Inhalte abrufen | 355 |
11.4.2 Verwalten größerer Download-Anforderungen | 356 |
11.4.3 Laden der Inhalte | 358 |
11.5 Die Dynamic Language Runtime (DLR) | 365 |
11.5.1 Dynamische Typisierung | 365 |
11.5.2 Metaprogrammierung | 368 |
11.6 Zusammenfassung | 370 |
12 Bereitstellen und Verteilen | 372 |
12.1 Erzeugen eines User Controls | 372 |
12.1.1 Definition des Erscheinungsbildes | 373 |
12.1.2 Definieren des Verhaltens | 374 |
12.1.3 Das Control aufrufen | 377 |
12.2 Navigation in Silverlight-Anwendungen | 378 |
12.2.1 Anpassen der Architektur | 378 |
12.2.2 Einen Navigator implementieren | 380 |
12.2.3 Navigieren zwischen den Seiten (alias UserControls) | 381 |
12.3 Einen eigenen Splash-Screen erzeugen | 382 |
12.3.1 Oberflächenentwurf | 382 |
12.3.2 Verwendung des Splash-Screens | 384 |
12.3.3 Den Ladevorgang überwachen | 385 |
12.4 Hosten mit Silverlight-Streaming | 385 |
12.4.1 Vorbereiten für das Streaming | 386 |
12.4.2 Verpacken | 386 |
12.4.3 Versende es! | 388 |
12.4.4 Verwende es! | 388 |
12.5 Zusammenfassung | 389 |
Index | 390 |