I have a ListBox with many objects displayed, each of which can be a variable height, based on the number of values each object has. See my previous question that was answer
Disable virtualization or make the items in your ListBox all of equal height. If you've got less than 100 items or so, you can live without the virtualization.
Set ScrollViewer.CanContentScroll="False"
on the ListBox, this will disable what's called "logical scrolling", which does scrolling based on item count instead of height ("physical scrolling").
Why not switch off any size restrictions on the ListBox itself, let it size to contents and wrap it into a ScrollViewer, setting a proper size for the latter?
The markup should look like the following:
<ScrollViewer Width="640px" Height="480px">
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<!--Visualization of a list item-->
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
I saw no thumb size changings during scrolling if it was implemented this way.