Device-specific interaction logic in an MVVM application

May 20, 2009

Rudi Grobler recently posted an article called ‘Classic Jukebox‘ that shows how to build a jukebox application using custom hardware.  It’s a very cool idea, and his article is well worth reading.

This article reminds me of a problem that I was discussing with someone at work the other day, and have been thinking about since.  What are the best practices for designing an app, let’s say the Jukebox app, such that it can accomodate multiple form factors?  Suppose you wanted this app to be controlled by a custom input device, or a regular mouse + keyboard, or on a multi-touch device like Microsoft Surface, or an HP TouchSmart running Windows 7. 

Each form factor would bring along new, and potentially unique, interaction possibilities: Surface allows for multi-finger gestures, while a traditional keyboard allows for things like shortcut keys, etc.  How should the MVVM design be used/augmented to make the input processing device-specific, without convulting the core application logic (play next song, pause, lower volume, etc)?  Should there be an intermediary layer  between View and ViewModel, which is perhaps an InteractionModel, to which the device-specific View is bound?   This topic is something that I’m very interested in, so expect to see some more posts on it in the near future.

Food for thought…


Routed Events in Silverlight 3

May 15, 2009

I started working at IdentityMine a few weeks ago, and have been exposed to several very interesting projects made by some very smart people.  One project that I think has a lot of potential was created by Andrew Whiddett.  He created a library that adds in-depth routed event support in Silverlight 3.  If you are working with Silverlight, I highly suggest you check this exciting project out!  I’m very interested in seeing where this goes…

http://sl3routedevents.codeplex.com/

If you have any feedback on that library, please leave it on the project’s Discussions board.  Enjoy!