Úvod do vývoja pre windows phone 7 ii

21
Igor Kulman [email protected] www.inmite.eu Windows Phone 7

Upload: igor-kulman

Post on 12-May-2015

714 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Úvod do vývoja pre Windows Phone 7 II

Igor Kulman

[email protected] www.inmite.eu

Windows Phone 7

Page 2: Úvod do vývoja pre Windows Phone 7 II

Windows Phone 7

Opakovanie z minule• XAML• C#

Dnes• Navigácia• ApplicationBar• Lokalizácia• MVVM• Nuget• Komponenty tretích strán• Perzistencia nastavení aplikácie• Novinky vo Windows Phone 8

Page 3: Úvod do vývoja pre Windows Phone 7 II

Opakovanie

Page 4: Úvod do vývoja pre Windows Phone 7 II

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í)

Page 5: Úvod do vývoja pre Windows Phone 7 II

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}

Page 6: Úvod do vývoja pre Windows Phone 7 II

ListBox

• Nastavenie, odkiaľ má použiť dáta pomocou ItemSource

• Nastavenie šablóny pre jednotlivé položky pomocou ItemsTemplate

Page 7: Úvod do vývoja pre Windows Phone 7 II

Š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}

Page 8: Úvod do vývoja pre Windows Phone 7 II

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}}

Page 9: Úvod do vývoja pre Windows Phone 7 II

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

Page 10: Úvod do vývoja pre Windows Phone 7 II

Dnes

Page 11: Úvod do vývoja pre Windows Phone 7 II

Navigácia

• Jednotlivé „stránky“ aplikácie tvorené *.xaml súbormi

• Navigácia 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

Page 12: Úvod do vývoja pre Windows Phone 7 II

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#

Page 13: Úvod do vývoja pre Windows Phone 7 II

Lokalizácia

• 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

Page 14: Úvod do vývoja pre Windows Phone 7 II

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

Page 15: Úvod do vývoja pre Windows Phone 7 II

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”)

Page 16: Úvod do vývoja pre Windows Phone 7 II

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 ...

Page 17: Úvod do vývoja pre Windows Phone 7 II

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

Page 18: Úvod do vývoja pre Windows Phone 7 II

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)

Page 19: Úvod do vývoja pre Windows Phone 7 II

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ť!

Page 20: Úvod do vývoja pre Windows Phone 7 II

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

Page 21: Úvod do vývoja pre Windows Phone 7 II

Projekt z úvodnej prednášky: http://dl.dropbox.com/u/73642/Demo.zipKompletné zdrojové kódy (BitBucket): http://code.kulman.sk/mff-wp7-basics

Demo