Если я вас правильно понимаю, вы хотите, чтобы ваш ItemsControl
занял все доступное пространство и изменил размер его содержимого так, чтобы ScrollViewer не требовался для просмотра всех элементов
В этом случае замените значение по умолчанию ItemsPanelTemplate
в вашем ItemsControl
на элемент управления, который растягивается, чтобы занять все доступное пространство, например DockPanel
. По умолчанию ItemsPanelTemplate
- это StackPanel
, который будет расти по мере необходимости.
<ItemsControl x:Name="Curves" Grid.Row="0">
<!-- ItemsPanelTemplate -->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<!-- ItemContainerStyle -->
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="DockPanel.Dock" Value="Top" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
Если вы хотите, чтобы все ваши предметы имели одинаковый размер, я бы предложил использовать UniformGrid
вместо DockPanel
и связать свойство Rows
с количеством предметов в вашей коллекции.
<ItemsControl x:Name="Curves" Grid.Row="0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="{Binding
RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}},
Path=Items.Count}" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>