4. XAML – kontajnery
Dva základné kontajnery
Grid
• Možnosť rozdeliť na riadky a stĺpce
• Zaberá vždy maximum plochy
Stackpanel
• Vertikálna alebo horizontálna orientácia
• Zaberá vždy nutné minimum (podľa
veľkostí detí)
5. XAML – základné komponenty
• TextBlock, TextBox, ListBox, Button
• Všetky komponenty obsahujú eventy, na ktoré
môžeme reagovať (OnClick pre Button)
• Kód reagujúci na eventy v „code behind“ súbore
(*.xaml.cs)
• Priradenie do riadku a stĺpca vrámci Gridu
pomocou Grid.Row a Grid.Column
• Odkaz na vlastnosti ViewModelu pomocou
{Binding Name}
6. ListBox
• Nastavenie, odkiaľ má použiť dáta pomocou
ItemSource
• Nastavenie šablóny pre jednotlivé položky
pomocou ItemsTemplate
7. Šablóny a štýly
• Globálne umiestnené v App.xaml, lokálne v
*.xaml v sekcií PhoneApplicationPage.Resources
• Štýl:
<Style x:Key=“Key” TartgetType=“Type”>
<Setter Property=“..” Value=“..”>
</Style>
• Šablóna
<DataTemplate>
…
</DataTemplate>
• Odkazovanie pomocou {StaticResource key}
8. Konvertory
• Triedy implementujúce IValueConverter (metódy
Convert a ConvertBack)
• Možnosť prevodu akehokoľvek typu na akýkoľvek
iný typ
• Definované ako StaticResource
• Použitie v Bindingu
{Binding Name, Converter={StaticResource
MyConverter}}
9. ViewModel
• C# trieda, ktorej properties môžu byť použité v
XAML cez Binding
• Nastavenie cez this.DataContext v *.xaml.cs
• Možnosť vygenerovať design time data v Blende
11. á
• Jednotlivé „stránky“ aplikácie tvorené *.xaml
súbormi
• á pomocou
NavigationService.Navigate(Uri)
• Uri môže okrem cesty k *.xaml súboru
obsahovať aj parametre ako URL na webe
• Pri vstupe na „stránku“ sa vykonáva
OnNavigateTo – možnosť získať parametre
• Pri opustení stránky OnNavigatedFrom
12. ApplicationBar
• V spodnej časti stránky
• Štandardný miesto na umiestnenie ovládacích
prvkov
• Max 4 ikonky a max 5 textových odkazov
• Nie je možné použiť Binding
• Možnosť definovať v XAML aj v C#
13. ǰ첹á
• Využitie *.resx súborov (.NET štandard)
• Konvencie (kód jazyka alebo krajiny)
• AppResources.resx – neutrálny jazyk
• AppResources.cs.resx – čeština
• AppResources.en-US.resx – US angličtina
• Jednoduché použitie v kóde
• V XAML nutné použiť vlastnú triedu vo WP7, vo
WP8 súčasť šablóny nového projektu
• Možnosť testovať v emulátore
14. MVVM
• Preferovaný spôsob tvorby aplikácií pre WP7/8
• View
• XAML súbor predstavujúci UI
• ViewModel
• C# trieda obsahujúca properties, ktoré
využíva View (Binding)
• Model
• Poskytuje dáta pre ViewModel
• Možnosť zlúčiť ViewModel a Model
15. MVVM – obojsmerný binding
• Vo View (XAML) je možné použiť obojsmerný
Binding
• <TextBlock Text=“{Binding Name,
Mode=TwoWay}” />
• Zmena vo View sa prejaví zmenou property
vo ViewModeli
• ViewModel musí implementovať
INotifyPropertyChanged
• Hodnoty prvkov vo View je možné priamo
prepojiť s properties ViewModelu, nepotrebujeme
s nimi manipulovať v code behind (*.xaml.cs”)
16. MVVM – INotifyPropertyChanged
• Musí implementovať každý ViewModel
• Oznamuje View, že došlo k zmene hodnoty
property a tá sa má prekresliť
• Niektoré triedy implementujú automaticky
(ObservableCollection)
• Viac na príklade ...
17. Nuget
• Štandardný spôsob inštalácie cudzích knižníc
• Katalóg dostupný na Nuget.org, priamo vo VS
• Jednoduchá inštalácia, update
• Automatické riešenie závislostí
• Väčšina .NET knižníc dostupná na Nugete
• Možnosť publikovať vlastné knižnice
18. Komponenty tretích strán
• SDK obsahuje len veľmi základné komponenty
• Možnosť použiť komponenty tretích strán (cez
Nuget)
• Phone Toolkit
• Sada komponent od zamestnancov MS
• Všetky komponenty použité v systéme ale
chýbajúce v SDK
• Telerik
• Platená sada komponent (99 USD)
19. Perzistencia nastavení aplikácie
• Dáta možné ukladať do IsolatedStorage
(súbory), IsolatedStorageSettings (nastavenia)
• IsolatedStorageSettings.ApplicationSettings je
klasický Dictionary<string,object>
• Automatická perzistencia
• Nutnosť volať Save() po každej zmene
• Pri prístupe z viacerých vlákien nutné zamykať!
20. Novinky vo Windows Phone 8
• Native: DirectX, C++, and Direct3D graphics
• Speech to Text, Text to Speech, Voice
Commands
• Lock Screen: Background image, counter, and
text
• Nokia Maps
• Camera: Lenses apps
• Wallet
• Apps Tracking GeoLocation in the background
• OS write access: Creating Calendar
appointments, Contacts
• App2app: Custom protocols, File associations
• Bluetooth: phone to phone, Phone to device
• NFC: "Tap and Share"
• Multi resolution
21. Demo
Projekt z úvodnej prednášky: http://dl.dropbox.com/u/73642/Demo.zip
Kompletné zdrojové kódy (BitBucket): http://code.kulman.sk/mff-wp7-
basics