You could write something like:
dataGridPerson.DataContext = Wrapper<Person>(Dal.GetPerson(3));
Now you have so much writing of repeatable, boring code...
Most of the time, you have already filled objects (often POCO). Why to write for each INotifyPropertyChanged, INotifyPropertyChanging, IEditableObject... Maybe it was better ways, maybe a little slower, but more easy for programmer?