A: 

I've created standalone ViewModels, but generally not standalone models. The reason for this is DataBinding -- most POCOs don't implement the INotifyPropertyChanged interface and adding them in to make them pseudo-Models seems to defeat the purpose of re-using a simple class AND respecting the MVVM pattern.

Now, if you KNOW you're never going to be editing them, it may not be a bad idea. A VM with simple property redirects seems a bit pointless to me.

micahtan
Sorry that I haven't written that models are read-only so we don't need INotifyPropertyChanged implementation. [Edited question]
levanovd
+4  A: 

I have no issue with bypassing the VM and using the M directly in the View. Sometimes the models are so small and static that loading them into a wrapping VM is wasteful.

vanja.
A: 

As far as I'm concerned, if you implement INotifyPropertyChanged, then it becomes a ViewModel, and you can bind to it. :) When I wrote SoapBox Core which is all MVVM, I took the approach that everything is a ViewModel. The only Model objects were classes from third party libraries that I brought in and wrapped in a ViewModel of my own.

Scott Whitlock
Getting to the OP's question, though, *why* did you do it this way? For very simple Model objects that are only ever displayed as read only, why did you go that extra step to creating a ViewModel for them? I don't think this is bad or good, just that the OP is trying to find out *why* someone would do this or why it's bad not to.
Anderson Imes
@Anderson Imes: In the specific case of an immutable object (readonly) there's no reason you'd implement INotifyPropertyChanged, so binding to it is fine. Or if you don't expect it to change, I don't see a reason not to bind to it.
Scott Whitlock
Originally it sounded like you went "all" viewmodel... this would be a complete reinvention of all Model objects as viewmodels, but your clarification seems to indicate you took it on a case-by-case basis. This is much clearer, thank you.
Anderson Imes
A: 

I wouldn’t create a ViewModel for the Person business object when the ViewModel doesn’t introduce new required functionality.

You might be interested that there is a second approach in the MVVM community: Create a ViewModel per View and not per Business Object.

Sample applications that follow this approach can be found on the WPF Application Framework (WAF) website.

jbe