Windows Store alkalmazások
Windows 8 platform Communication & Data Devices & Printing WinRT API csoportok Graphics & Media Asztali C C++ Win32 C# VB.NET & SL HTML JavaScript IE 10 Windows Store (W8 stílusú) Alkalmazásmodell XAML JavaScript HTML / CSS C++ C# VB Windows kernel szolgáltatások DirectX
C C++ Win32 C# VB.NET runtime HTML CSS JavaScript IE 10 Asztali alkalmazások . NET 4.5 (C#, VB) WPF 4.5 Silverlight 5 XNA Windows Forms C/C++ Win32 Web HTML, JS IE 10 stb... Windows kernel szolgáltatások C/C++ runtime FelügyeltNatív C/C++ runtime WPF, WF, Konzol HTA
W8 stílusú alkalmazások Alapvető eltérések Megjelenés, kezelés eltér az asztali alkalmazásoktól Alapvetően táblagép szemlélet Egyszerűsített felület, többpontos érintés- ujjmozgatás alapú vezérlés Szenzorok „A felhasználó akcióira történő azonnali reagálás”
W8 stílusú alkalmazások .NET 4.5 (C#, VB) XAML (DirectX) C++ XAML DirectX HTML/CSS + JS Filozófia: „Válaszd azt, amihez értesz!” Windows Kernel Services Communication & Data Devices & Printing WinRT API-k Graphics & Media Windows Store (W8 stílusú) Windows Runtime Kernel XAML JavaScript HTML / CSS C++ C#, VB DirectX.NET 4.5 Runtime JavaScript motor
Windows Runtime (WinRT) API-k Devices SensorsGeolocation Portabl e NFC Communications & Data Contracts XML Web SMS Networking Notification s Local & Cloud Storage Streams Background Transfer User Interface HTML5/CSSXAMLDirectXControls InputAccessibilityPrinting Data Binding TilesSVG Fundamentals Application Services AuthenticationCryptography Globalizatio n Memory ManagementThreading/Timers Media Visual Effects PlaybackPlayToCapture Windows Runtime Kernel
Windows Runtime (WinRT) Alapja a COM Metadata (interfész definíció) .winmd fájlok .NET metadata (Ecma-335) Névterek, osztályok, interfészek, … Nyelvi leképezés (language projection) Automatikusan leképződnek az adott környezetre Pl..NET: IVector - IList INotifyPropertyChanged
Windows Runtime (WinRT) Windows Runtime objektum Implementáció: C++, C#, VB Windows Runtime objektum Implementáció: C++, C#, VB Windows Metadata C++ App Leképezés CLR C#/VB App Leképezés HTML/JS App Chakra Leképezés
További WinRT komponensek Runtime Broker – en keresztül érhetők el a mikrofon, webkamera, internet, GPS, szenzorok, stb. – a felhasználó engedélyéhez kötött erőforrások Az RB kérdezi meg a felhasználót az első hozzáférési kísérletnél Web Host – ebben futnak a HTML-CSS-JavaScript alkalmazások
Windows Runtime (WinRT) Core funkciók Alkalmazás életciklus Adatkezelés (JSON, XML) Szálkezelés, aszinkron műveletek natív támogatása Listák Eszközkezelés Sensor API (giroszkóp, gyorsulásmérő, iránytű, fény, orientáció, stb…) Helymeghatározás (GPS, WiFi, IP) Nyomtatás NFC, SMS, FAX, WPD, …
Windows Runtime (WinRT) Adattárolás Könyvtár/fájl műveletek FilePicker, keresés, ZIP Hálózatkezelés Socket Push notification Background transfer Háttérfolyamatok Szolgáltatások 2 • Clipboard • Keresés • Megosztás • Biztonság • Kriptográfia • Certificate, creadentials • Erőforrások, lokalizáció
Windows Runtime (WinRT) Web RSS, AtomPub Multimédia Kamera Videó, audió Kódolás PlayTo (DLNA) PlayReady (DRM) Szolgáltatások 3 • UI • XAML • Csempék • Toast értesítések • Popup • Stb…
Projekt
„Hagyományos” tárolók Felbontás: 1024x x1440… Ugyanaz, mint WPF/SL StackPanel Grid Canvas VirtualizingStackPanel Mi nincs? WrapPanel DockPanel UniformGrid De lehet sajátot készíteni: Panel leszármazott
StackPanel Elemek egymás alatt vagy mellett Orientation Horizontal Vertical ItemHeight, ItemWidth: elemek mérete MaximumRowsOrColumns: max hány sor vagy oszlop lehet az Orientationtól függően (-1: bármennyi – ez a default) Virtualizált változat: VirtualizingStackPanel
Grid Táblázatos megjelenítés Sorok/oszlopok megadása: Fix pixel Auto Csillag (*) Gyerekelemek elhelyezése Grid.Row Grid.Column Grid.RowSpan Grid.ColumnSpan
WrapGrid Uniform megjelenítés Nem WrapPanel! Elemek mérete: ItemHeight, ItemWidth Ha nincs beállítva, akkor az első elem mérete alapján Egyéb tulajdonságok: MaximumRowsOrColumns Orientation Csak listáknál használható Virtualizált
VariableSizedWrapGrid Uniform megjelenítés Elemek mérete: ItemHeight, ItemWidth Ha nincs beállítva, akkor az első elem mérete alapján Különböző elemméretek (attached property) RowSpan, ColumnSpan Egyén tulajdonságok: MaximumRowsOrColumns Orientation Csak listáknál használható Nem virtualizált!
Canvas Gyerek vezérlők szabadon elhelyezhetők: Canvas.Left Canvas.Right Canvas.Top Canvas.Bottom
Egyszerű vezérlők
RepeatButton, HyperlinkButton
ToggleSwitch Header IsOn OnContent OffContent Toggled esemény ToggleButton IsThreeState IsChecked vagy események: Checked/Unchecked/Indeterminate
Szöveg beviteli vezérlők Single-Line Text BoxPassword Box Multi-Line Text Box Rich Edit Box Clear Button Reveal Button
Szöveg megjelenítés Egyszerű szöveg TextBlock egyszerű formázás: Font, TextAlign, TextWrap, TextTrimming (…), LineHeight, Foreground TextBox: InputScope PasswordBox: PasswordChar, IsPasswordRevealButtonEnabled Formázott szöveg RichTextBlock, RichTextBlockOverflow Paragraph, Span, LineBreak, Run, Bold, Italic, InlineUIContainer
Csúszka Slider Minimum, Maximum SmallChange, LargeChange TickFrequency Inline TickPlacement: Inline, TopLeft, BottomRight, Outside, None StepFrequency – milyen részletességgel (felbontással) vehet fel értékeket
Folyamat előrehaladása ProgressBar IsIndeterminate ProgressRing IsActive
Parancsok és műveletek Application bar Context menu Popup Tooltip Message dialog
Üzenetablak megjelenítése Egyszerű üzenetablak Bezár gombbal async private async void ToggleButton_Indeterminate_1(object sender, RoutedEventArgs e) { var md = new MessageDialog("Indeterminate"); await await md.ShowAsync(); }
Párbeszédpanel létrehozása és használata
Megjelenítés és bezárás
További vezérlők Frame Page UserControl ViewBox Web View Media Element Image Scrollbar
Grafikai alakzatok Path Line Polygon Polyline Rectangle Ellipse
Mi hiányzik? TabControl Expander Label DatePicker/TimePicker Rating
Lista vezérlők hierarchiája ItemsControl leszármazottjai ItemsSource adatkötés ItemTemplate/ItemTemplateSelector Csoportosítás (Group) ListBox FlipView ListView GridView
Támogatott Selector SelectedItem ListViewBase Semantic Zoom Adat virtualizáció Drag n drop, átrendezés Gesztusok (swipe kiválasztás) Animációk
ListView/GridView
FlipView Oldalra lapozható Jobbra és balra Fel és le Touch Slide gesztus Egér gomb Ideális: Képgaléria
Semantic Zoom „Szemantikus nagyítás” Csoportosított kollekción 2 szint Alapból: ListViewBase, de kiterjeszthető
Nem áll rendelkezésre DataGrid TabControl TreeView Menu ContextMenu
async - await SyndicationClient scOlvasó = new SyndicationClient(); // Nem a gyorsítótárból kívánjuk olvasni az adatokat. scOlvasó.BypassCacheOnRetrieve = true; Uri uriRSS= new Uri(" try { // Bejegyzéslista lekérése. SyndicationFeed sfRSS = await scOlvasó.RetrieveFeedAsync(uriRSS); // A metódus további része akkor hajtódik végre, amikor a // RetrieveFeedAsync végrehajtódott. var Hírek = sfRSS.Items; cbHírek.ItemsSource = Hírek; cbHírek.DisplayMemberPath = "Title.Text"; cbHírek.IsEnabled = true; } catch {}
Aszinkron hívást végrehajtó metódus async A neve előtt: async AsyncTaskAsync Elnevezési konvenció: …Async(…) vagy …TaskAsync(…) A visszatérési értéke: void void – ha nem várunk visszatérési értéket, és nem akarjuk tudni, hogy mikor fejeződött be Task Task – ha nem várunk visszatérési értéket, de szinkronizálni akarunk hozzá valami más tevékenységet var x= Obj.DoAsync(); … // Itt jönnek azok a műveletek amelyek végrehajthatók, … // amíg az aszinkron művelet befejeződik await x; Task Task - T típusú visszatérési értéket várunk SyndicationFeed sf= await client.RetrieveFeedAsync(rss); Névtelen metódus és lambda kifejezés is lehet async
Támogatott szenzorok 1 Gyorsulásmérő (Accelerometer) 3 tengely mentén szöggyorsulás Iránytű (Compass) Mágnesen északi irány, valódi északi irány Giroszkóp (Gyrometer) Szögsebesség a 3 tengely mentén Dőlésszögmérő (Inclinometer) Yaw, pitch, roll szögek a 3 tengely mentén
Támogatott szenzorok 2 Egyszerű orientáció (Simple orientation) Hogy áll az eszköz? 0 fok, 90 fok, 180 fok, 270 fok, stb… Pontos orientáció (Orientation sensor) Pontos helyzet (mátrix vagy kvaternió) Fényérzékelő (Light sensor) Fényerősség Lux-ban
Helymeghatározás Támogatott módszerek IP cím Wi-Fi háromszögelés GPS Geolocator osztály Két pontosság (eltérő költség) Geoposition: Geocoordinate: hosszúság, szélesség, magasság, pontosság, sebesség, nézőpont Address: ország, város, postakód