A good post by my Garbin on how to achieve something close to this...
interesting
Ramblings about C#, .NET and Programming