Előszó... 13 1. Silverlight és XAML alapok... 15 Bevezetés a Silverlight világába... 15 Mi is az a Silverlight?... 15 Különböző verziók, különböző célok... 16 A Silverlight felépítése... 18 Az elmélettől a gyakorlatig... 19 Dizájner-fejlesztő együttműködés, avagy út a XAML-hez... 19 A Silverlight alkalmazásfejlesztés eszközei... 21 A Hello Silverlight alkalmazás elkészítése... 21 Mit kell tudni egy Silverlight alkalmazásról?... 24 A projektsablonok és egy egyszerű projekt felépítése... 24 Út a TestPage lekérésétől a MainPage Loaded esemény bekövetkezéséig... 26 Plug-in lehetőségek... 29 XAML, a felületleíró nyelv... 31 A pixelgrafika és a vektorgrafika összehasonlítása... 31 A XAML nyelv alapjai... 31 A XAML nyelv szintaxisa... 32 További XAML lehetőségek... 33 Összefoglalás... 33 2. Layout Management... 35 Pozicionálás... 35 Layout életciklus... 36 Measure... 36 Arrange... 36 Bounding-Box... 36 Margin és Padding... 38 Layout metrika... 39 Layout rounding... 39 Teljesítmény... 40 Virtualizáció... 40 Transzformációk... 41 Layout vezérlők... 41 Grid... 41 Canvas... 43 StackPanel... 45 5
WrapPanel... 46 DockPanel... 49 Felület kialakítása konténerek egymásba ágyazásával... 51 Összefoglalás... 55 3. Alapvető vezérlők... 57 Osztályhierarchia... 57 Logikai és vizuális fa... 58 Dependency property, Attached property... 59 Eseménykezelés... 60 Vezérlők a gyakorlatban... 61 ContentControl... 62 ItemsControl... 68 Egyéb vezérlők... 74 Összefoglalás... 77 4. fejezet: Animáció és Média... 79 Alakzatok rajzolása a Silverlightban... 79 Egyszerűbb geometriai formák rajzolása... 79 Saját alakzatok ábrázolása... 82 Vágási felületek kialakítása... 83 Az alakzatok kitöltése és színezése... 85 Képek és videók megjelenítése... 87 Képek megjelenítése az Image vezérlő segítségével... 87 Videó és zene lejátszása... 88 Transzformációk a felületen... 89 Egyszerű transzformációk... 89 Saját transzformációk mátrixokkal... 91 A Silverlight 3D képességei... 93 Animációk a Silverlight-ban... 93 Egyszerű animációk létrehozása... 94 Átmenetek és finomítások az animációban... 97 Összefoglalás... 97 5. Stílusok és testreszabhatóság a Silverlightban... 99 Erőforrások a Silverlightban... 99 Az erőforrások szerepe... 99 A StaticResource objektum... 100 Az erőforrások hozzáférhetősége... 100 Az erőforrások használata... 100 Az erőforrás fájlok (ResourceDictonary)... 101 Stílusok... 103 A stílusok szerepe... 103 Stílusok öröklődése... 104 Implicit stílusok... 104 6
A vezérlők testreszabása... 105 A ControlTemplate-ek szerepe... 105 ControlTemplate-ek definiálása.... 105 Ismerkedés a ContentPresenter-rel... 107 A TemplateBinding fogalma... 108 Vizuális állapotok... 108 Vizuális állapotátmenetek... 111 Komplexebb vezérlők testreszabása... 113 Összefoglalás... 113 6. Adatok kezelése... 115 Hogyan használjuk az adatokat?... 115 Különböző adatforrások, különböző adatmennyiségek... 115 Adatmegjelenítési lehetőségek... 115 A megjelenítési réteg és az adatréteg összekapcsolási módjai... 116 Az adatkötés alapjai... 116 Az adatkötés folyamata... 116 DepedencyProperty és a Silverlight Tulajdonság rendszere... 117 Adatkötés alapjai egy egyszerű példán keresztül... 118 Adatkötési lehetőségek, testreszabás... 120 Adatkötési módok... 120 A kétirányú adatkötés és az INotifyPropetyChanged kapcsolata... 121 Megjelenített adat formázása, esetleges hiányosságok, hibák kezelése... 123 Konverterek használata... 124 Vezérlők közötti adatkötés... 127 Listás adatmegjelenítés... 131 A listás adatmegjelenítés alapjai... 131 ObservableCollection használata mint adatforrás... 132 Listás adatmegjelenítés Visual Studióban... 133 Listás adatmegjelenítés Expression Blendben... 136 Összefoglalás... 139 7. Saját vezérlők készítése Silverlightban... 141 UserControlok fejlesztése Silverlightban... 141 A UserControlok szerepe... 141 UserControlok létrehozása... 142 User Controlok felhasználása... 144 UserControl: Nézet vagy hagyományos vezérlő?... 145 Custom Controlok fejlesztése Silverlightban... 145 Egy Custom Control anatómiája... 146 A NumericUpDownControl alapértelmezett megjelenése... 147 A Value Dependency Property implementálása... 148 Eseménykezelő függvények bekötése... 150 Vizuális állapotok a Custom Controlban... 151 7
Testreszabhatóság támogatása... 153 Összefoglalás... 156 8. Kommunikáció a kliens és a szerver között... 157 Kommunikáció a kliens-szerver modell alapján... 157 WCF szolgáltatások készítése, elérése és használata... 158 Történeti áttekintés, a WCF fejlesztési céljai... 158 A WCF felépítése és az ABC... 159 Szolgáltatások létrehozása... 160 Szolgáltatások elérése és használata... 162 Data Transfer Object használata... 165 WCF Data Services, avagy az adatok egyszerű kipublikása... 167 A REST protokoll és az OData lekérdezőnyelv... 167 WCF Data Services alapok... 170 Szolgáltatások létrehozása... 171 Szolgáltatások elérése és használata... 173 Master-Details nézet létrehozás a WCF Data Services segítségével... 176 WCF RIA Services, a kliens-szerver modell újragondolása... 178 A Nagy Ötlet, avagy a magától adódó architektúra?... 178 Szolgáltatások létrehozása... 179 Szolgáltatások elérése és használata... 181 Adatok módosítása és validálása WCF RIA Service-n keresztül... 185 További kommunikációs lehetőségek röviden... 188 HTTP alapú kommunikáció a WebClient osztály segítségével... 188 Socket programozás Silverlightban... 190 Silverlight kliensek közötti kommunikáció: Local Connection... 192 Összefoglalás... 194 9. A Silverlight rejtett képességei... 195 Az alapok összeállítása... 195 A vágólap kezelése... 198 Drag & Drop az operációs rendszerből... 201 Kamerakezelés... 203 Teljes képernyő használata... 206 Nyomtatás... 207 Hálózatészlelés... 210 Out-of-Browser applications... 211 Kitörés... 211 Testreszabás... 213 API... 215 Toast API... 220 Fájlkezelés... 221 Adatmentés és olvasás az Isolated Storage-ban... 221 Beállítások mentése és olvasása Isolated Storage-ből... 223 8
Isolated Storage Quota... 224 Az igazi fájlrendszer elérése... 225 My Documents... 226 Kommunikáció más alkalmazásokkal... 227 Office (és más COM objektumok) vezérlése... 227 Kommunikáció Silverlight alkalmazások között... 228 Navigation Framework... 230 Megvalósítás egyszerű vezérlőkkel... 231 Lapozások közti adatmegőrzés... 232 Egyéb lehetőségek... 233 Silverlight Browser Integration... 234 A Silverlight plug-in... 235 JavaScript hívása Silverlightból... 238 HTML manipulálása Silverlightból... 238 XAML manipulálása JavaScriptből... 239 Összefoglalás... 239 10. Üzleti alkalmazások fejlesztése Silverlight-ban... 241 Üzleti alkalmazások fejlesztésének követelményei... 241 Tesztelés és a szoftver minőség... 241 Karbantarthatósági szempontok... 241 A fejlesztő és a dizájner közötti együttműködés... 242 Architekturális minták a prezentációs rétegben... 242 A Model-View-Controller architekturális minta... 242 A Model-View-ViewModel architekturális minta... 243 A MVVM architekturális minta gyakorlati alkalmazása... 244 MVVM keretrendszerek használata... 244 Az alkalmazás struktúrájának kialakítása... 244 A ViewModel-ek alapfunkcionalitásának implementálása... 247 A nézetek (Views) implementálása... 252 A nézetek és a ViewModel-ek összekötése... 253 A ViewModel-ek és a VisualStateManager közötti kommunikáció... 258 Commanding az MVVM-ben... 261 Lazán csatolt metódushívások... 261 A Command Pattern implementálása MVVM-ben... 261 Kommunikáció a ViewModel-ek között... 263 Lazán csatolt kommunikáció... 263 Adatok kezelése MVVM-ben CollectionViewSource-szal... 265 Az ICollectionView bevezetése a BooksViewModel-be... 265 Rendezés SortDescription-ök segítségével... 266 Szűrés a Filter delegate segítségével... 267 Navigáció az adatok között... 267 Adatok érvényességének ellenőrzése... 268 9
Az INotifyDataErrorInfo implementálása MVVM-ben... 270 Érvényességi hibák megjelenítésének testreszabhatósága... 272 A ViewModel-ek Unit tesztelése... 273 Unit teszt készítése a BooksViewModel-hez... 273 Összefoglalás... 275 11. Összetett adatok megjelenítése és kezelése... 277 Táblázatos adatmegjelenítés... 277 A DataGrid vezérlő alapvető használata... 277 Saját oszlopsablonok létrehozása... 279 Adatok csoportosítása, rendezése és szűrése... 280 Dialógusformába rendezett adatok megjelenítése... 281 Adatbeviteli felület létrehozása a DataForm vezérlővel... 281 Lapozás az adatok között... 283 Virtuális ablakok a Silverlightban... 284 ChildWindow létrehozása és adatkötése... 285 Hibaüzenetek megjelenítése ChildWindow segítségével... 286 A Silverlight Toolkit... 287 Vezérlők, melyek nem a Silverlight SDK részei... 287 Összefoglalás... 287 12. Moduláris alkalmazások fejlesztése... 289 Lazán csatolt rendszerek... 289 Architekturális megfontolások... 289 Függőségek kezelése Dependency Injection... 289 A Managed Extensibility Framework... 290 Exportálás... 290 Importálás... 291 Komponálás... 291 Az importálás lehetőségei... 292 Metaadatok használata... 298 Katalógusok használata... 300 Managed Extensbility Framework a valódi világban... 302 A Composite Application Guidance (PRISM)... 302 A PRISM által megcélzott problémák... 303 Modulok tervezése és implementálása... 303 Összefoglalás... 309 13. A HTML5, az alternatív webes technológia a Silverlight mellett... 311 HTML5 alapok... 312 Szemantikus vezérlőelemek... 312 Multimédiás vezérlőelemek... 312 A vászon vezérlőelem... 313 A HTML5-öt kiegészítő modulok... 323 Az SVG modul... 323 10
Kliens oldali adattárolás... 323 A GeoLocation modul... 324 Az Offline Web Applications modul... 325 A Web Workers modul... 326 A CSS 3 stílusleíró nyelv... 326 Kiválasztók... 327 A Media queries modul... 329 A Colors modul... 329 Dinamikus tartalomgenerálás... 330 A Template layout modul (CSS sablonok)... 331 A Background and borders modul... 331 A Fonts modul... 332 A transzformációs modul (2D és 3D)... 332 Az animációs modul... 332 Az áttűnés modul... 333 Összefoglalás... 333 11