In general: if something fails with a 3rd party grid, we can't help you, contact the 3rd party grid vendor FIRST. TEST everything with vanilla .NET controls if something fails. We can't nor will test our code with every control out there and take the blame if something fails.
Our code works OK in normal winforms. If you ran into a problem with normal winforms (NOT WPF), please start a separate thread.
Databinding is tricky. If inheritance is used with entities, you're out of luck: databinding can't deal with that. We try but you'll probably run into issues with grids. This is because grids tend to rely on the first row of the types of the columns to produce.
I know .NET doesn't come with a WPF grid (at least .NET 3.0 didn't). I also know WPF uses a different style of databinding but should support old-style databinding as well. The error you see occurs because the object passed in isn't castable to the type of the collection. So in your person example, the new object isn't of type Person or castable to Person. What's causing that... we've to check.
The thing is now: we need to have a proper reprocase. This should be reproducable with a normal listbox using WPF. Again, if a 3rd party grid fails, sorry, but we won't invest any more time in tracking down bugs in 3rd party controls, unless it's proven the fault is on our side because normal .NET controls also fail.
That said, I tried a little app on WPF. The value passed to the method is 'null'. I have NO IDEA why.
So I commented out the check and simply returned when null was passed in... it worked!
I'll prepare a new build of the runtime lib v2.5 for you to test.