• Save
TechDays2011 WPF JA MVVM Tieturi/Kallonen
Upcoming SlideShare
Loading in...5
×
 

TechDays2011 WPF JA MVVM Tieturi/Kallonen

on

  • 1,202 views

 

Statistics

Views

Total Views
1,202
Views on SlideShare
1,202
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

TechDays2011 WPF JA MVVM Tieturi/Kallonen TechDays2011 WPF JA MVVM Tieturi/Kallonen Presentation Transcript

  • WPF ja MVVM –malliJari Kallonen, MCT, Tieturi Oy
  • Sisältö•Model-View-ViewModel (MVVM)•Arkkitehtuurimallien evoluutio•WPF ja MVVM•Avaintekniikat• -Databinding• -Data Templates• -Commanding• -Resources•Testaus
  • Model-View-ViewModel (MVVM)•Arkkitehtuurimalli•Taas uusi malli MVC, MVP jne.•Käyttö läheisesti WPF, Silverlight ja WP7•XAML View View Model Code•Ylläpidettävyys (XAML)•Testattavuus Services•Blendable... Model (Domain, SQL, File, Memory...) View slide
  • Arkkitehtuurimallien evoluutio•MVC Model-View-Controller Pohjana monentyyppisille sovelluksille•MVP Model-View-Presenter ASP.NET Web Forms Windows Forms•MVVM... View slide
  • MVC ja MVP
  • WPF ja MVVM•Suositeltava malli...•Ei pelkästään WPF Silverlight Windows Phone 7 (WP7)•Tukena tekniikoita XAML Databinding Data templates Commanding
  • Model•Osio (luokka) joka sisältää tietorakenteet•Voi myös olla proxyluokka WCF palveluun View ViewModel Model
  • ViewModel•Osio joka hoitaa tiedon View osioon ja osiolle•Kommunikoi View ja Model osioiden kesken•Ilmoittaa View osiolle tiedon muutoksista,… vaikkaei tiedä View osiota•Uudelleenkäytettävyys parempi kuin code-behind•Ei tunne View osiota, huomattava ero MVC jaMVP malleihin nähden View ViewModel Model
  • View•Käyttää Bindingia kytkeytyessä ViewModelosioon, DataContext, Binding jne.•Esittää (visualisoi) sovelluksen tiedon ja tilanViewModel osiosta•Käyttöliittymä, taustalla XAML•Vähän tai ei ollenkaan code-behind koodia View ViewModel Model
  • MVVM ohjeistus1. Vähennä tai eliminoi code-behind2. Sido kaikki syötteet ja tulosteet ViewModel osioon3. Toteuta INotifyPropertyChanged rajapinta ViewModelosioon4. Testauksessa ViewModel osio kuin se olisikäyttöliittymä5. Vältä eventtejä, käytä Commandingia
  • Demo – yksinkertainen MVVMsovellus
  • Model luokka•Sovellustiedon ominaisuudet•Tietokantarutiinit (CRUD)•Kapseloi kommunikoinnintaustapalveluihin, WCF Service, tietokantajne.
  • ViewModel luokka•Mahdollisesti toteuttaa IEditableObjectrajapinnan BeginEdit, CancelEdit, EndEdit•Toteuttaa INotifyPropertyChangedrajapinnan PropertyChanged event Mahdollistaa View:n reagoimaan tiedon muutoksiin
  • View:n sitominen•DataContext View luo ilmentymän ViewModelista Sitoo sen itsensä (window/page/usercontrol...) DataContextiin tai XAML:lla• <Window.DataContext>• <myLocal:MainWindowViewModel/>• </Window.DataContext>•Binding Sidotaan käyttöliittymäoliot XAML:lla <TextBox Text="{Binding Path=CreateDate, Mode=OneWay}" . . .
  • Avaintekniikat - Databinding•Käyttöliittymä odottaa tietoa mutta ei sidosuoraan mihinkään olioon•DataContext käyttöliittymälle•Kuvataan XAML:lla<TextBox Text="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=LostFocus, ValidatesOnExceptions=True}“ Converter={StaticResource MessageForegroundColor}, ConverterParameter=FormStateMessageType}" IsEnabled="{Binding Path=IsEditing}" . . .
  • Avaintekniikat - Databinding•Path Ominaisuuden nimi DataContextista•Mode Tiedon suunta ViewModelista TwoWay, OneWay jne.•ValidatesOnException Tiedon validointi•Converter Oma esitys tiedolle, esim. bool tieto jotain muuta kuin true/false
  • Avaintekniikat – Data Templates•Mahdollistaa joustavasti visuaalisenilmeen muuttamisen
  • Avaintekniikat – Data Templates
  • Avaintekniikat – Commanding•Liittää käyttöliittymän toiminnallisuudenViewModel osioon•Builtin Commands Cut, Copy, Paste jne. Play, Stop, Pause jne.•Omat Commandit ja sitominen ICommand
  • Avaintekniikat – Resources•Tapa kuvata esim. Käyttöliittymä osiaresursseina tilanteen mukaan XAML –kielellä.•Paikalliset ja globaalit resurssit, perintä jaylikirjoitus jne.<Page.Resources> <converter:MessageForegroundColor x:Key="MessageForegroundColor" /></Page.Resources>
  • Demo – mukana myös Model osio
  • Testaus•Aikaisempaan viitaten, helpottaayksikkötestausta•Testaus aina ViewModel osioon
  • Yhteenveto• Suositeltava malli käytettäessä WPF,Silverlight ja WP7 kehyksiä• Yksinkertaisessa sovelluksessa voi olla”overkill”• Oppimiskynnys voi tuntuahaastavammalta kuin ”perinteinen tapa”mutta lopulta tekniikat eivät olekaan niinhaastavia• Ylläpidettävyys, testattavuus
  • Kysymysten aika?
  • Kiitos ja kumarrus!Jari Kallonen, Tieturi Oy
  • © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any inf ormation provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.