Mar 31

I am very fond of using patterns when developing and I have seen the importance of patterns in several projects. When it comes to Windows Phone 7 development I guess the most popular pattern to use is the Model-View-ViewModel (MVVM) pattern. I have successfully used a different (but still quite similar) pattern for several mobile app projects. In this post I will show you how to use the Model-View-Presenter (MVP) pattern when developing Windows Phone 7 applications.

I will not go into details describing the MVP-pattern since I covered that pretty well in another post I wrote a while back: Using Model-View-Presenter (MVP) pattern in Compact Framework. What I will do is to show an example on how you can design your Windows Phone 7 app architecture to use MVP-pattern. I will use the same login example as I used in the Compact Framework post. You can see that the biggest difference between how you do this for CF and WP7 is the data binding capability in WP7.

Before we go to the code a short summary on the essence of the MVP-pattern: The View is only responsible for displaying output to the user and receiving input from the user. The View will always ask the Presenter what to do with the data and the Presenter will pass the data on to the View. The Model consists of business objects and can be used both by the Presenter and the View. The figure below explains the MVP-pattern.

Now it’s time to have a look at the code. For this example I have created a solution called MvpDemo. To this solution I have added two projects. One Silverlight for Windows Phone – Windows Phone Application project called MvpDemo and one Silverlight for Windows Phone – Windows Phone Class Library called MvpDemo.MVP.

Continue reading »

Tagged with:
Jan 08

We have entered 2010 and I am now actually enjoying (a lot of people are complaining) the cold and nice winter weather in Oslo (20 degrees Celsius below freezing). I have had a hectic start on this year preparing the start up of a large national project. This is very exciting and I find this a promising start on 2010.

2009 was the year that I started this blog. It has been interesting writing the posts and communicating with my readers. I have also learned a lot in 2009 and I will for sure continue writing posts on topics I find interesting.

To summarize 2009 I will list my top ten posts in 2009. This list is created based on visitors stats and my own rating of the posts (there are always some posts that you are more proud of and have spent more time writing than others).

Creating gradient background with transparent labels in .NET Compact Framework

Continue reading »

Tagged with:
Oct 18

The Run Smart With Me (RSWM) application is my Windows Mobile pet project and I have now decided on and designed the system architecture for this project.

The application will be built for the Windows Mobile 6 Professional SDK with the .Net Compact Framework 3.5 version.

This project will be based on the Model View Presenter pattern (previous post about MVP). I have created a solution in Visual Studio 2008 called RunSmartWithMe, to this solution I have added 6 projects:

  • RunSmartWithMe: This is the startup project where I will have the main class and all my screens
  • RunSmartWithMe.Mvp: In this project I have created a namespace for Model, View and Presenter. In Model I will place business objects that I use in my application. In View I will keep the interfaces describing the views. In Presenter I will keep the interfaces describing the presenters and also the class implementation of the presenters.
  • RunSmartWithMe.Util: In this project I will place all my utility classes used through the application.
  • RunSmartWithMe.Dal: This is my Data Access Layer responsible for retrieving and storing data.
  • TechCon.Ui: In this project I will place all my custom controls and user controls.
  • TechCon.HardWare: In this project I will place all classes concerning hardware integration, in this specific project it will be the GPS unit on the device.

Continue reading »

Tagged with:
Jul 02

I have been involved developing a C#.Net Compact Framework project were we are using Model-View-Presenter(MVP) pattern for quite a while now and I would like to share my experiences learned during this project with you.

First of all, using MVP in a Compact Framework project is done exactly the same way as you would do it for standard C#.Net (or any other programming language). For some reason (unknown to me) developers tend to skip using patterns in mobility projects. I guess they think that good architecture is not necessary in smaller projects, like mobility projects often are. Wrong! As a developer you should strive to achieve good architecture in your projects no matter what size or complexity they have. What pattern to choose is of course another discussion. We chose to base the project architecture on the MVP-pattern and succeeded doing so. Let me walk you through how we ended up using it.

The figure below shows how the MVP components interact with each other. The View are implemented in the screens (forms) and the Presenter presents the data to be displayed to the View. The Presenter is responsible for the business logic and retrieve/save data to the Model. The Model will often interact with a Data Access layer (left out in this example for simplicity). The Model will also have business specific objects that both the Presenter and View can use, but the View will never ask the Model for data or save data to the Model.


Continue reading »

Tagged with:
Subscribe to my feeds Follow me on Twitter