A program a „Tudáshasznosulást, tudástranszfert segítő eszköz-, és feltételrendszer kialakítása, fejlesztése a Műegyetemen” (TÁMOP /1/KMR ) és a „Minőségorientált, összehangolt oktatási és K+F+I stratégia, valamint működési modell kidolgozása a Műegyetemen” (TÁMOP-4.2.1/B-09/1/KMR ) című projektek támogatásával valósul meg. Fejlesztés Windows Phone-ra 1. Kővári Bence Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék
Tartalom Fejlesztőeszközök Szoftverkörnyezet Silverlight XAML MVVM Testreszabás
DEMO Visual Studio, Emulátor
Windows Phone Developer Tools Ingyenesen letölthetők
Windows Phone 7 architektúra Common Base Class Library Collections ComponentModelConfiguration Diagnostics Reflection IO Security Threading RuntimeResources GlobalizationText Location Net ServiceModel Linq Application Object Silverlight Presentation and Media Navigation ShapesMarkup Media ControlsDrawingIsolatedStorage XNA Frameworks for Games Audio Media Graphics Input DrawingGamerServices Content Windows Phone Frameworks PhoneApplicationPagePushNotificationWebBrowserControlSensorsPhoneApplicationFrame CameraDevice Integration Launchers & Choosers Windows Phone Controls
Silverlight WPF kistestvére Felhasználói felület programozására Vektorgrafikus megjelenítés Attached és Dependency Property Binding mechanizmus .NET ismeretek újrafelhasználhatók UX
XAML eXtensible Application Markup Language XML alapú deklaratív felület leíró nyelv Fejlesztők és a dizájnerek közös nyelve 7
Események A XAML-höz logika is tartozik Events Vezérlőkhöz (pl.: Loaded, Click …) Interakciókhoz (pl.: Tap …) private void Button_DoubleTap( object sender, GestureEventArgs e) { MessageBox.Show( „Ne piszkálgass már!" ); }
DEMO XAML, BUTTON
Metro dizájn Egy telefonos alkalmazásnál mindig fontos a dizájn A metro önmagában is stílusos, letisztult A programunk is metro-s kell hogy legyen Fejlesztői támogatás Panorama Pivot ApplicationBar
Vezérlők Button, TextBox, CheckBox, ListBox, Image, Grid … <TextBox Text="Hello!" InputScope="Url|Number|Search|Chat…" />
DEMO InputScope
Toolkit Speciális telefonra optimalizált vezérlők gyűjteménye Open source ContextMenu ListPicker ToggleSwitch TimePicker …
Vektorgrafikus megjelenítés Transzformáció, animáció, média, layout, stílusok …
DEMO BLEND
Adatközpontúság Ritkán dolgozunk statikus adatokkal Dinamikus, frissülő, változó adatok Adatkötés mechanizmusa {Binding…}, forrás (source), cél (target) Célja egy vezérlő tulajdonságainak hozzákötése az adatforráshoz Az adatok és a felület szinkronban kell hogy legyenek Vezérlő – automatikusan Adatosztály – interfész implementálásával
Adatkötés public class Person { public string Name { get; set; }... }
DEMO Adatkötés
MVVM Az adatkötés önmagában nem csodaszer Egy alkalmazás gyorsan túl komplexszé válhat Átláthatatlan kód Túl erős függőség a modell entitásoktól Gyakori: MVC Megoldás: MVVM Model – View – ViewModel
MVVM A karbantarthatóság mértéke nő A Model és a GUI közötti függőség megszűnik Tisztább, karbantarthatóbb alkalmazás View – megjelenítés ViewModel – viselkedés Model – nyers adatkezelés
MVVM Model View Controller Input Presenter
MVVM Model View Presenter ViewModel Input
DEMO MVVM
Stílusok A felület kialakításakor is könnyű káoszt okozni Explicit stílusjegyek megadása (beégetett betűtípus, szín …) Stílusok létrehozása kulcs / érték formában <Button... Foreground="Red" FontStyle="Italic" Style="{StaticResource btnStyle}" />
Sablonok Sablonokkal is testreszabható a vizuális megjelenítés Adat objektumok Vezérlők Újrafelhasználhatóság <ListBox ItemsSource="{Binding Items}" ItemTemplate="{StaticResource MyTemplate}" />
Navigáció Frame: oldalak közötti váltás NavigationService Navigáció az alkalmazáson belül Vissza gomb Alkalmazások között is működik API szinten befolyásolható a működés De csak óvatosan!