Hi Eric,
In order to achieve this behavior you should apply the layout each time a subtree is shown/hidden. Click on the View Source tab of the Show/Hide Subtree Decorator example to see how to do this in code. Pay more attention to the NodePropertyChanged event handler (it is called when a subtree visibility has changed) which starts a timer and when this timer's tick event is fired, the timer applies the layout.