Personally I find the above answers too general or vague. Also, as someone is inevitably going to bump into this thread just as I did, I might as well provide what I found:
A tutorioal on CodeProject, and,
another blog entry that builds up on the former.
Hope this helps...