title: PropertyGrid alternatives
body: <p>I love PropertyGrid, well, at least the concept behind it - use reflection and attributes to edit your objects without writing much UI code.</p>
  
  <p>My excitement died out pretty quickly though, the default PropertyGrid shipping with WinForms flat-out sucks. Well, it's fine for editing simple objects and such, but that's as far as it goes.</p>
  
  <ul>
  <li>It doesn't display appropriate UITypeEditors for dynamic properties which have type "Object".</li>
  <li>As soon as your objects contain collections, you might be able to edit them with so called CollectionEditor. However, it won't fire PropertyValueChanged event. So once you need to add undo functionality, you're screwed.</li>
  <li>And I still haven't found an elegant way to add validation for CollectionEditor.</li>
  <li>It's also problematic to implement undo if you have multiple objects selected, because in that case PropertyValueChanged event args ChangedItem is null.</li>
  </ul>
  
  <p>I soon found myself writing hacks to address those issues with less than agreeable results.</p>
  
  <p>What would you do?
  Is there an elegant solution to at least the first three issues?
  Is there an alternative propertygrid? Preferably free &amp; without PInvokes?</p>