際際滷

際際滷Share a Scribd company logo
TechDays2011 WPF JA MVVM Tieturi/Kallonen
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 (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 ...
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.2016
Tieturi 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 purku
Tieturi 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 2013
Tieturi 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
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.2016
Tieturi 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 purku
Tieturi 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 2013
Tieturi 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

TechDays2011 WPF JA MVVM Tieturi/Kallonen

  • 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
  • 19. Avaintekniikat Data Templates
  • 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.