Building Silverlight Applications Using the MVVM

Download Report

Transcript Building Silverlight Applications Using the MVVM

Building Silverlight Applications Using the MVVM pattern

An Introduction by Peter Messenger Senior Developer – Qmastor http://www.petermessenger.com

Silverlight and WPF

• User interface programming platform operates on top of the NET framework • WPF is windows based • Silverlight can run in web browsers, Windows and Apple, Windows Mobile etc – Use XAML (eXtensible Application Markup Language) – Have powerful databinding capabilities – Have command properties where screen elements can perform actions

Example XAML and Code Behind

Hello World Example Using XAML View and “traditional” events and elements knowledge Simple.xaml

What is the MVVM pattern?

• Model View ViewModel is a coding pattern to develop Silverlight and WPF applications.

• Main aims – Cleaner code and easier to maintain and extend – Testable applications – Thinner user interface layer – Easier for User Interface designers to concentrate on how the application will look and coders to concentrate on what the application will do

Concepts of MVVM

Three broad categories of objects – Model • Contain data consumed and modified by user • Include things like business rule processing, input validation, change tracking and other things relating to system data • In database terms, this could be considered as tables, views and stored procedures used to update them

Concepts of MVVM

Three broad categories of objects – View • UI control that displays data • Allows the user to modify the state of the data via keyboard or mouse • Shows video, images or whatever else needs to be displayed • Bound to the model via databinding

Concepts of MVVM

Three broad categories of objects – ViewModel • Model of a view (abstraction) • Expose properties to which views are bound • Including properties that return command objects • Notify view of changes via PropertyChangedEvent (INotifyPropertyChanged interface) • Collections of data can be updated via ObservableCollections • Gets update of data via two way binding in the view

Example XAML and Code Behind

Hello World Example Using XAML View bound to ViewModel Binding.xaml

Comments

• As can be seen, this simple example takes some setting up and increased code • When you work on more complicated programs and use inheritance, this becomes much less of an issue • There are several different open source templates that can be used to get started

My Experience with MVVM

• Spent last 8 months developing Silverlight application for Qmastor – Web interface for NSW mines to interact with the new Newcastle Coal Port to manage their coal shipments – Trialled using the MVVM pattern with great success – Other developers in the company then started using it – Likely to be the company defacto standard from now on

Discussion and Code

More complicated example Data Entry and Validation Employee database MainPage.xaml

Questions

Links

• Wikipedia http://en.wikipedia.org/wiki/Model_View_ViewModel • Understanding the MVVM pattern http://live.visitmix.com/MIX10/Sessions/EX14 • WPF Apps using the MVVM pattern http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

• MVVM Light Toolkit http://www.galasoft.ch/mvvm/getstarted/ • Advanced MVVM – Josh Smith http://www.advancedmvvm.com