TechDays2011 WPF JA MVVM Tieturi/Kallonen

1,086 views
1,002 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,086
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TechDays2011 WPF JA MVVM Tieturi/Kallonen

  1. 1. WPF ja MVVM –malliJari Kallonen, MCT, Tieturi Oy
  2. 2. Sisältö•Model-View-ViewModel (MVVM)•Arkkitehtuurimallien evoluutio•WPF ja MVVM•Avaintekniikat• -Databinding• -Data Templates• -Commanding• -Resources•Testaus
  3. 3. 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...)
  4. 4. Arkkitehtuurimallien evoluutio•MVC Model-View-Controller Pohjana monentyyppisille sovelluksille•MVP Model-View-Presenter ASP.NET Web Forms Windows Forms•MVVM...
  5. 5. MVC ja MVP
  6. 6. WPF ja MVVM•Suositeltava malli...•Ei pelkästään WPF Silverlight Windows Phone 7 (WP7)•Tukena tekniikoita XAML Databinding Data templates Commanding
  7. 7. Model•Osio (luokka) joka sisältää tietorakenteet•Voi myös olla proxyluokka WCF palveluun View ViewModel Model
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. Demo – yksinkertainen MVVMsovellus
  12. 12. Model luokka•Sovellustiedon ominaisuudet•Tietokantarutiinit (CRUD)•Kapseloi kommunikoinnintaustapalveluihin, WCF Service, tietokantajne.
  13. 13. ViewModel luokka•Mahdollisesti toteuttaa IEditableObjectrajapinnan BeginEdit, CancelEdit, EndEdit•Toteuttaa INotifyPropertyChangedrajapinnan PropertyChanged event Mahdollistaa View:n reagoimaan tiedon muutoksiin
  14. 14. 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}" . . .
  15. 15. 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}" . . .
  16. 16. 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
  17. 17. Avaintekniikat – Data Templates•Mahdollistaa joustavasti visuaalisenilmeen muuttamisen
  18. 18. Avaintekniikat – Data Templates
  19. 19. Avaintekniikat – Commanding•Liittää käyttöliittymän toiminnallisuudenViewModel osioon•Builtin Commands Cut, Copy, Paste jne. Play, Stop, Pause jne.•Omat Commandit ja sitominen ICommand
  20. 20. 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>
  21. 21. Demo – mukana myös Model osio
  22. 22. Testaus•Aikaisempaan viitaten, helpottaayksikkötestausta•Testaus aina ViewModel osioon
  23. 23. 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
  24. 24. Kysymysten aika?
  25. 25. Kiitos ja kumarrus!Jari Kallonen, Tieturi Oy
  26. 26. © 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.

×