Úvod do vývoja pre Windows Phone 7 II

Post on 12-May-2015

714 views 2 download

Transcript of Úvod do vývoja pre Windows Phone 7 II

Igor Kulman

igor@inmite.eu www.inmite.eu

Windows Phone 7

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

Opakovanie

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

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}

ListBox

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

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

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

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

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

Dnes

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

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#

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

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

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

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

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

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)

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

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

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