You could take a look at the following blog post describing the built-in bring into view functionality, hope it will be of help to you.
Regarding the container generator event. They should be fired at the correct time, when the container is generated. But this moment could be too early for the item to be brought into view. Generally you need Loaded event of RadTreeView after the item has been fully created.
Also, RadTreeView holds only first level items, which means you can get container only for the root items. In order to retrieve second level container you should use the container generator of its respective item's parent (a first level RadTreeViewItem). In addition, every RadTreeViewItem is lazy loaded. Which means, it will be generated the first time it is required (first time it should be shown into the view port).
I totaly agree with you the timer workaround is an ugly hack and should not be used.
Hope this helps. Please let us know if you need further assistance.
the Telerik team
Sharpen your .NET Ninja skills
! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>