Thanks Manish, excellent series of articles. I went down the route of adding SelectedValue to my controls rather than modify my data access classes. For lists, I use SelectedValue and for single item binding like textboxes, I use a custom ValueConverter.
Ian, when used across the whole app, I think it might clutter up the code a bit with custom joins for each binding. I'm also not sure how the CLR does mem management for strings; if I have one string object (e.g. 'France') in 100 objects, are there 100 instances in memory of the string?