I just updated to the latest version of WPF controls from RadControls_for_WPF40_2011_2_0920_Dev_hotfix.zip and decided to try out the PropertyGrid. I'm not planning on using the autogenerate feature, but thought it might be helpful to point out what I noticed.
Each time I change objects in the Item property, my application becomes unresponsive for a few seconds, and memory usage goes up by anywhere from 20 MB to 200 MB. It never runs out of memory, because it appears in ProcessExplorer to be reclaimed as soon as it hits the memory ceiling. When it is finished, it displays the 30 to 50 properties on my objects. But it does not provide any expanders to view properties of nested objects. (EDIT: I just noticed the NestedPropertiesVisibility setting)
It appears that most of the time is spent in Type.GetProperties() after about ten recursive calls to GenerateNestedPropertyDefinitions(). You might benefit from using some caching so that you don't have to make so many calls to Type.GetProperties(). Maybe something like the TypeInfoCache from http://www.codeproject.com/KB/cs/generaldynamicobjectproxy.aspx. And maybe find a way to perform the property searches on a background thread.
Each time I change objects in the Item property, my application becomes unresponsive for a few seconds, and memory usage goes up by anywhere from 20 MB to 200 MB. It never runs out of memory, because it appears in ProcessExplorer to be reclaimed as soon as it hits the memory ceiling. When it is finished, it displays the 30 to 50 properties on my objects. But it does not provide any expanders to view properties of nested objects. (EDIT: I just noticed the NestedPropertiesVisibility setting)
It appears that most of the time is spent in Type.GetProperties() after about ten recursive calls to GenerateNestedPropertyDefinitions(). You might benefit from using some caching so that you don't have to make so many calls to Type.GetProperties(). Maybe something like the TypeInfoCache from http://www.codeproject.com/KB/cs/generaldynamicobjectproxy.aspx. And maybe find a way to perform the property searches on a background thread.