First off, I appreciate your feedback on this. Unfortunately, while your suggested approach could resolve scrolling issues via key presses, there are other property grid slow downs it won't address. For instance, consider a datagrid where each time a new object is added to its bound collection, the item appears as a new row and is selected. Additionally, the datagrid's SelectedItem is bound to the property grid. We basically have this setup in our application and have seen that when rapidly adding new items, there's a noticeable slowdown that disappears when the property grid isn't bound to the control's SelectedItem. Thus, we'd like to find a solution that addresses the property grid slowdown in a general manner, not just for scrolling.
To handle this in a more centralized way, would it be possible to implement something like the following:
1. Have a DP (let's call it "LatestSelectedObject") that stores the latest item assigned to it.
2. When the property grid indicates that it has finished an update, perhaps via an event (might SelectedObjectsChanged work?), if LatestSelectedObject is not null, then we update the property grid's SelectedObject binding with the LatestSelectedObject value and clear LatestSelectedObject.
Do you think this mechanism could work? Are there any potential issues I'm not seeing? It's clearly similar to your suggested approach for scrolling, except that I can't use EndUpdate as I'd never know when to call it.
Also, generally speaking, can we expect better property grid performance in later releases? Is property grid performance a problem that you're still working on?