Tartalomjegyzék 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
Tartalomjegyzék 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
Tartalomjegyzék 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
Tartalomjegyzék 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
Tartalomjegyzék 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
Tartalomjegyzék 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
Tartalomjegyzék 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