The new thing in Q3 is the virtualization and scrolling is handled by the virtualizing panel.
I investigated the issue and here it is:
- There is a bug in the Silverlight ScrollViewer where the VerticalOffset will not be updated properly especially if it is updated in succession and by an IScrollInfo panel.
- The virtualizing panel handles the scrolling in the TreeView and it may happen to update the VerticalOffset of the ScrollViewer quickly (in succession).
- This is important in synchronous methods like GetItemByPath and BringIndexIntoView.
I will spare the details, but our workaround for this bug breaks the mouse wheel in this case. We were not aware of this - thank you for reporting it. I have attached a project where you can see that only the TreeView handles the quick scrolling changes expectedly.
Here is what I suggest:
1. If you want to use UI virtualization (the IsVirtualizing="true")
- Any control placed in a ScrollViewer loses its virtualization. The control (the panel actually) needs to know about the ScrollViewer so that it extracts information about the visible parts from it. If you place the control in a ScrollViewer, it gets infinite space and therefore no items are virtualized.
In this case you will need to edit the TreeView's template and alter the ScrollViewer there.
2. If you do not want to use UI virtualziation:
- We will make sure that the workaround I mentioned is not applied in this case. I have not tested this yet, but I do not expect issues there.
- In the meantime you can change the ItemsPanel of the TreeView back to the "good old" StackPanel. I expect that your behavior will work then, the code for this is:
The changes in our code will be available with the next internal build and SP1.
Your Telerik Points have been updated.
the Telerik team