Project Description

Liphofra is short for "Little Phone Framework" because I'm really bad at thinking of fancy names for my projects. It is an extract and reworked collection of all sorts of helpers and supporting types I used over the years in projects for Windows Phone to help with creating MVVM projects on the platform.

What's in the package?

  • A basic IoC container implementation
  • A lean abstraction of the isolated storage file system
  • An event aggregation mechanism
  • A PhoneApplicationPage derived base type to aid typical MVVM requirements
  • View model base types with fundamental navigation feature support
  • An flexible and extensible view model locator mechanism
  • Basic value converters and behaviors

I'm open to suggestions and will extend the framework with useful things when I come across them.

News

2013-11-06:

Liphofra version 2.2.1 is now available as NuGet package (package id is "liphofra").

Background

A lot of people ask me about what frameworks and components I recommend on Windows Phone, and they often are surprised when they learn I don't use an out-of-the-box MVVM framework. Naturally the next question is: why? The truth is that there are a lot of very good and popular frameworks out there, and without providing a list of them, I still recommend that you check out what's available before you make a decision. My personal choice to not use any of them mostly is based on the following reasons:

  • Some projects I tested over-simplify certain aspects I expect from such a framework, for example view model lifetime. While suitable for simple apps, these details were not sufficient for some professional apps I was working on that became quite complex with loads and loads of functionality and requirements.
  • Other projects took it too far. I've also seen frameworks that require that you deeply integrate them into each and every detail of your app, that introduce rather obscure automatism and convention-based stuff that is e.g. hard to learn for new team members, and easy to forget if you pause working on a project for some weeks or months. ´
  • Most projects try to target multiple platforms at the same time, i.e. by providing different builds for Windows Phone, Windows 8 Store Apps and Silverlight, maybe even .NET, all with a similar or identical API. It's a laudable and legitimate goal, for example to maximize re-use of code and to avoid the necessity to learn different frameworks for different platforms. However, I typically don't aim for things like view model sharing across platforms, and I also think that peculiarities of the Windows Phone platform (lifetime details, user experience and navigation concepts etc.) don't particularily scream "one size fits all" and should be treated as they are: platform-specific. Most frameworks that don't do this have a somewhat weak feeling to me when I use them on the phone.

So, if you are looking for maximum code reuse and a multi-platform framework, Liphofra is not for you. If you want to have a highly specialized framework for Windows Phone, give it a try.

Last edited Nov 6, 2013 at 11:38 AM by Mister_Goodcat, version 4