SlideShare a Scribd company logo
1 of 27
WPF ja MVVM –malli
Jari 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...)
Arkkitehtuurimallien evoluutio
•MVC
  Model-View-Controller
  Pohjana monentyyppisille sovelluksille
•MVP
  Model-View-Presenter
  ASP.NET Web Forms
  Windows Forms
•MVVM...
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,… vaikka
ei tiedä View osiota
•Uudelleenkäytettävyys parempi kuin code-behind
•Ei tunne View osiota, huomattava ero MVC ja
MVP malleihin nähden



         View        ViewModel         Model
View
•Käyttää Bindingia kytkeytyessä ViewModel
osioon, DataContext, Binding jne.
•Esittää (visualisoi) sovelluksen tiedon ja tilan
ViewModel osiosta
•Käyttöliittymä, taustalla XAML
•Vähän tai ei ollenkaan code-behind koodia


        View         ViewModel        Model
MVVM ohjeistus
1. Vähennä tai eliminoi code-behind
2. Sido kaikki syötteet ja tulosteet ViewModel osioon
3. Toteuta INotifyPropertyChanged rajapinta ViewModel
osioon
4. Testauksessa ViewModel osio kuin se olisi
käyttöliittymä
5. Vältä eventtejä, käytä Commandingia
Demo – yksinkertainen MVVM
sovellus
Model luokka
•Sovellustiedon ominaisuudet
•Tietokantarutiinit (CRUD)
•Kapseloi kommunikoinnin
taustapalveluihin, WCF Service, tietokanta
jne.
ViewModel luokka
•Mahdollisesti toteuttaa IEditableObject
rajapinnan
  BeginEdit, CancelEdit, EndEdit
•Toteuttaa INotifyPropertyChanged
rajapinnan
  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 sido
suoraan 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 visuaalisen
ilmeen muuttamisen
Avaintekniikat – Data Templates
Avaintekniikat – Commanding
•Liittää käyttöliittymän toiminnallisuuden
ViewModel osioon
•Builtin Commands
   Cut, Copy, Paste jne.
   Play, Stop, Pause jne.
•Omat Commandit ja sitominen
   ICommand
Avaintekniikat – Resources
•Tapa kuvata esim. Käyttöliittymä osia
resursseina tilanteen mukaan XAML –
kielellä.
•Paikalliset ja globaalit resurssit, perintä ja
ylikirjoitus jne.
<Page.Resources>
  <converter:MessageForegroundColor
         x:Key="MessageForegroundColor" />
</Page.Resources>
Demo – mukana myös Model osio
Testaus
•Aikaisempaan viitaten, helpottaa
yksikkötestausta
•Testaus aina ViewModel osioon
Yhteenveto
• Suositeltava malli käytettäessä WPF,
Silverlight ja WP7 kehyksiä
• Yksinkertaisessa sovelluksessa voi olla
”overkill”
• Oppimiskynnys voi tuntua
haastavammalta kuin ”perinteinen tapa”
mutta lopulta tekniikat eivät olekaan niin
haastavia
• 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.

More Related Content

More from Tieturi Oy

Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Onlineallekirjoitus, Antti ...
Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Onlineallekirjoitus, Antti ...Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Onlineallekirjoitus, Antti ...
Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Onlineallekirjoitus, Antti ...Tieturi Oy
 
Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Robotit tulevat Cristina An...
Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Robotit tulevat Cristina An...Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Robotit tulevat Cristina An...
Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Robotit tulevat Cristina An...Tieturi Oy
 
Tieturi - Paluu tulevaisuuteen, Veli-Matti Heiskanen, 25.5.2016
Tieturi -  Paluu tulevaisuuteen, Veli-Matti Heiskanen,  25.5.2016Tieturi -  Paluu tulevaisuuteen, Veli-Matti Heiskanen,  25.5.2016
Tieturi - Paluu tulevaisuuteen, Veli-Matti Heiskanen, 25.5.2016Tieturi Oy
 
Kaisa Hernberg: Asiantuntija epämukavuusalueella myyntityössä
Kaisa Hernberg: Asiantuntija epämukavuusalueella myyntityössäKaisa Hernberg: Asiantuntija epämukavuusalueella myyntityössä
Kaisa Hernberg: Asiantuntija epämukavuusalueella myyntityössäTieturi Oy
 
Aamiaisseminaari 3.6.: SWOT-ryhmätöiden purku
Aamiaisseminaari 3.6.: SWOT-ryhmätöiden purkuAamiaisseminaari 3.6.: SWOT-ryhmätöiden purku
Aamiaisseminaari 3.6.: SWOT-ryhmätöiden purkuTieturi Oy
 
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteita. Teemu Anttila...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteita. Teemu Anttila...Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteita. Teemu Anttila...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteita. Teemu Anttila...Tieturi Oy
 
Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa . Timo Summa...
Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa. Timo Summa...Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa. Timo Summa...
Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa . Timo Summa...Tieturi Oy
 
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...Tieturi Oy
 
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...Tieturi Oy
 
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...Tieturi Oy
 
Testaus 2014: Paul Gerrard - The Changing Role of Testers'
Testaus 2014: Paul Gerrard - The Changing Role of Testers'Testaus 2014: Paul Gerrard - The Changing Role of Testers'
Testaus 2014: Paul Gerrard - The Changing Role of Testers'Tieturi Oy
 
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013Tieturi Oy
 
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...Tieturi Oy
 
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...Tieturi Oy
 
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.Tieturi Oy
 
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...Tieturi Oy
 
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.Tieturi Oy
 
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...Tieturi Oy
 
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...Tieturi Oy
 
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...Tieturi Oy
 

More from Tieturi Oy (20)

Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Onlineallekirjoitus, Antti ...
Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Onlineallekirjoitus, Antti ...Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Onlineallekirjoitus, Antti ...
Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Onlineallekirjoitus, Antti ...
 
Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Robotit tulevat Cristina An...
Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Robotit tulevat Cristina An...Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Robotit tulevat Cristina An...
Tieturin aamiaisseminaari: Paluu tulevaisuuteen - Robotit tulevat Cristina An...
 
Tieturi - Paluu tulevaisuuteen, Veli-Matti Heiskanen, 25.5.2016
Tieturi -  Paluu tulevaisuuteen, Veli-Matti Heiskanen,  25.5.2016Tieturi -  Paluu tulevaisuuteen, Veli-Matti Heiskanen,  25.5.2016
Tieturi - Paluu tulevaisuuteen, Veli-Matti Heiskanen, 25.5.2016
 
Kaisa Hernberg: Asiantuntija epämukavuusalueella myyntityössä
Kaisa Hernberg: Asiantuntija epämukavuusalueella myyntityössäKaisa Hernberg: Asiantuntija epämukavuusalueella myyntityössä
Kaisa Hernberg: Asiantuntija epämukavuusalueella myyntityössä
 
Aamiaisseminaari 3.6.: SWOT-ryhmätöiden purku
Aamiaisseminaari 3.6.: SWOT-ryhmätöiden purkuAamiaisseminaari 3.6.: SWOT-ryhmätöiden purku
Aamiaisseminaari 3.6.: SWOT-ryhmätöiden purku
 
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteita. Teemu Anttila...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteita. Teemu Anttila...Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteita. Teemu Anttila...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteita. Teemu Anttila...
 
Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa . Timo Summa...
Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa. Timo Summa...Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa. Timo Summa...
Aamiaisseminaari 3.6.: Johdetut projektit julkisessa hallinnossa . Timo Summa...
 
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
 
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
Aamiaisseminaari 3.6.: Kokonaisarkkitehtuuriprojektien haasteet. Tarja Raussi...
 
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
Aamiaisseminaari 3.6.: Julkisen hallinnon projektien haasteet ja mahdollisuud...
 
Testaus 2014: Paul Gerrard - The Changing Role of Testers'
Testaus 2014: Paul Gerrard - The Changing Role of Testers'Testaus 2014: Paul Gerrard - The Changing Role of Testers'
Testaus 2014: Paul Gerrard - The Changing Role of Testers'
 
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
Testaus 2014 -seminaari. Minna Aalto, Knowit, Vuoden Testaaja 2013
 
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...
Testaus 2014 -seminaari. Kaisa Tirkkonen, Kela. Case Kela: Monimutkaisten ja ...
 
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
Testaus 2014 -seminaari. Pauli Kauppila, Secrays Oy. Mitä jokaisen testaajan ...
 
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
Testaus 2014 -seminaari. Kari Kakkonen, FiSTB-puheenvuoro.
 
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
Testaus 2014 -seminaari: Arto Kiiskinen, Mirasys Oy. Case Mirasys: Toiminnoil...
 
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
 
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
ICT-palveluprosessit ja toiminnan tehostaminen: Jukka Timonen, "Matkalla koht...
 
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
ICT-palveluprosessit ja toiminnan tehostaminen: Tuukka Heinonen, "Asiakaskoke...
 
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
ICT-palveluprosessit ja toiminnan tehostaminen: Ben Kalland, "Prosessien selk...
 

TechDays2011 WPF JA MVVM Tieturi/Kallonen

  • 1.
  • 2. WPF ja MVVM –malli Jari Kallonen, MCT, Tieturi Oy
  • 3. Sisältö •Model-View-ViewModel (MVVM) •Arkkitehtuurimallien evoluutio •WPF ja MVVM •Avaintekniikat • -Databinding • -Data Templates • -Commanding • -Resources •Testaus
  • 4. 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...)
  • 5. Arkkitehtuurimallien evoluutio •MVC Model-View-Controller Pohjana monentyyppisille sovelluksille •MVP Model-View-Presenter ASP.NET Web Forms Windows Forms •MVVM...
  • 7. WPF ja MVVM •Suositeltava malli... •Ei pelkästään WPF Silverlight Windows Phone 7 (WP7) •Tukena tekniikoita XAML Databinding Data templates Commanding
  • 8. Model •Osio (luokka) joka sisältää tietorakenteet •Voi myös olla proxyluokka WCF palveluun View ViewModel Model
  • 9. ViewModel •Osio joka hoitaa tiedon View osioon ja osiolle •Kommunikoi View ja Model osioiden kesken •Ilmoittaa View osiolle tiedon muutoksista,… vaikka ei tiedä View osiota •Uudelleenkäytettävyys parempi kuin code-behind •Ei tunne View osiota, huomattava ero MVC ja MVP malleihin nähden View ViewModel Model
  • 10. View •Käyttää Bindingia kytkeytyessä ViewModel osioon, DataContext, Binding jne. •Esittää (visualisoi) sovelluksen tiedon ja tilan ViewModel osiosta •Käyttöliittymä, taustalla XAML •Vähän tai ei ollenkaan code-behind koodia View ViewModel Model
  • 11. MVVM ohjeistus 1. Vähennä tai eliminoi code-behind 2. Sido kaikki syötteet ja tulosteet ViewModel osioon 3. Toteuta INotifyPropertyChanged rajapinta ViewModel osioon 4. Testauksessa ViewModel osio kuin se olisi käyttöliittymä 5. Vältä eventtejä, käytä Commandingia
  • 12. Demo – yksinkertainen MVVM sovellus
  • 13. Model luokka •Sovellustiedon ominaisuudet •Tietokantarutiinit (CRUD) •Kapseloi kommunikoinnin taustapalveluihin, WCF Service, tietokanta jne.
  • 14. ViewModel luokka •Mahdollisesti toteuttaa IEditableObject rajapinnan BeginEdit, CancelEdit, EndEdit •Toteuttaa INotifyPropertyChanged rajapinnan PropertyChanged event Mahdollistaa View:n reagoimaan tiedon muutoksiin
  • 15. 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}" . . .
  • 16. Avaintekniikat - Databinding •Käyttöliittymä odottaa tietoa mutta ei sido suoraan 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}" . . .
  • 17. 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
  • 18. Avaintekniikat – Data Templates •Mahdollistaa joustavasti visuaalisen ilmeen muuttamisen
  • 20. Avaintekniikat – Commanding •Liittää käyttöliittymän toiminnallisuuden ViewModel osioon •Builtin Commands Cut, Copy, Paste jne. Play, Stop, Pause jne. •Omat Commandit ja sitominen ICommand
  • 21. Avaintekniikat – Resources •Tapa kuvata esim. Käyttöliittymä osia resursseina tilanteen mukaan XAML – kielellä. •Paikalliset ja globaalit resurssit, perintä ja ylikirjoitus jne. <Page.Resources> <converter:MessageForegroundColor x:Key="MessageForegroundColor" /> </Page.Resources>
  • 22. Demo – mukana myös Model osio
  • 24. Yhteenveto • Suositeltava malli käytettäessä WPF, Silverlight ja WP7 kehyksiä • Yksinkertaisessa sovelluksessa voi olla ”overkill” • Oppimiskynnys voi tuntua haastavammalta kuin ”perinteinen tapa” mutta lopulta tekniikat eivät olekaan niin haastavia • Ylläpidettävyys, testattavuus
  • 26. Kiitos ja kumarrus! Jari Kallonen, Tieturi Oy
  • 27. © 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.