Насколько я понимаю, благодаря системе макетов измерения / компоновки вы, по сути, говорите ListBox, что он может иметь все необходимое вертикальное пространство без каких-либо ограничений. Поэтому внутренний ScrollViewer в шаблоне ListBox по умолчанию никогда не должен запускать полосу прокрутки.
Я вижу два способа исправить это в вашей ситуации:
-Укажите ScrollViewer.VerticalScrollBarVisibility="Visible"
в ListBox, чтобы внутренний ScrollViewer всегда показывал полосу прокрутки.
-Используйте фактический ScrollViewer, чтобы он содержал ListBox, и пусть он предоставляет возможность прокрутки, а не во внутреннем ListBox (возможно, вам придется настроить отступы и границы, чтобы заставить его выглядеть правильно):
<ScrollViewer Grid.Row="1" Grid.Column="0">
<ListBox ItemsSource="{Binding ListOfNumbers}"
ItemTemplate="{StaticResource ListBoxItemTemplate}"/>
</ScrollViewer>
Я бы предпочел второй способ, потому что он показывал бы только вертикальную полосу прокрутки, если бы это было действительно необходимо.