Если вы удалите Height из вашего GroupBox (что, насколько я понимаю, это то, что вы хотите сделать), тогда он заполнит свой контейнер, если только нет панели вверх по течению, которая налагает свои собственные правила определения размера.
Я использовал эту упрощенную версию вашего XAML. Я удалил шаблон и привязку, а также жестко запрограммировал некоторые элементы, чтобы сделать это отдельно; эти изменения не повлияют на способ создания макета.
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<GroupBox FontWeight="Bold" Header="Tables" Padding="2">
<ScrollViewer>
<ItemsControl FontWeight="Normal">
<TextBlock>Foo</TextBlock>
<TextBlock>Bar</TextBlock>
<TextBlock>Baz</TextBlock>
</ItemsControl>
</ScrollViewer>
</GroupBox>
</Window>
Запустите его, и вы увидите, что содержание действительно соответствует размеру окна, а полоса прокрутки включается только тогда, когда окно становится слишком маленьким, чтобы увидеть все три элемента. Я считаю, что это то, что вы хотите.
Таким образом, проблема, скорее всего, связана с одной из родительских панелей, которую вы не видите в своем примере XAML. Проблема, которую вы описываете, может возникнуть, если ваш GroupBox появляется внутри StackPanel:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<StackPanel>
<GroupBox FontWeight="Bold" Header="Tables" Padding="2">
<ScrollViewer>
<ItemsControl FontWeight="Normal">
<TextBlock>Foo</TextBlock>
<TextBlock>Bar</TextBlock>
<TextBlock>Baz</TextBlock>
</ItemsControl>
</ScrollViewer>
</GroupBox>
</StackPanel>
</Window>
Теперь GroupBox появляется в верхней части окна, размер которого точно соответствует его содержимому. Если вы достаточно уменьшите окно, GroupBox будет обрезан - потому что он имеет размер, соответствующий его содержимому, а не контейнеру. Это похоже на проблему, которую вы описываете.
Причина в том, что StackPanel спрашивает своих детей, какова их идеальная высота (в зависимости от их содержимого), и использует эту высоту. Без StackPanel (или чего-то подобного) по умолчанию учитывается значение VerticalAlignment элемента управления, и если для него установлено значение Stretch по умолчанию, элемент управления растягивается, чтобы заполнить его родительский элемент. Это означает, что он не будет выше своего родителя, что звучит так, как вы хотите.
Решение: удалите StackPanel (или что-либо еще, что вызывает у вас проблемы) и используйте что-то еще. В зависимости от того, чего вы пытаетесь достичь, вам может повезти с DockPanel или Grid. Трудно сказать, не зная больше о вашем макете.
Редактировать: Хорошо, похоже, проблема действительно в HeaderedContentControl
родителе - но не напрямую. HeaderedContentControl не является панелью, поэтому он не имеет собственной разметки (и его потомок, GroupBox, не имеет такой же проблемы). Проблема в шаблоне по умолчанию, который включает в себя StackPanel. Хорошей новостью является то, что вы можете использовать другой шаблон, скажем, с DockPanel:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<HeaderedContentControl>
<HeaderedContentControl.Style>
<Style TargetType="{x:Type HeaderedContentControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type HeaderedContentControl}">
<DockPanel>
<ContentPresenter ContentSource="Header" DockPanel.Dock="Top"/>
<ContentPresenter/>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</HeaderedContentControl.Style>
<GroupBox FontWeight="Bold" Header="Tables" Padding="2">
<ScrollViewer>
<ItemsControl FontWeight="Normal">
<TextBlock>Foo</TextBlock>
<TextBlock>Bar</TextBlock>
<TextBlock>Baz</TextBlock>
</ItemsControl>
</ScrollViewer>
</GroupBox>
</HeaderedContentControl>
</Window>
Если вы пропустите часть <HeaderedContentControl.Style>
, это воспроизведет вашу проблему; но при наличии стиля он позволяет GroupBox заполнить свой контейнер, поэтому ScrollViewer получит полосу прокрутки, когда вы этого захотите.