I have the following code, I think the List should fill out the entire space occupied by the stack panel, I tried using Grid but it didn't work.
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" DockPanel.Dock="Top">
<ListBox x:Name="substanceList" ItemsSource="{Binding Source={StaticResource symTable}}" DockPanel.Dock="Top" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name, Mode=TwoWay}" VerticalAlignment="Center"/>
<TextBox Text="{Binding Count, Converter={StaticResource stringToIntConverter}, Mode=TwoWay}" VerticalAlignment="Center" BorderThickness="0"/>
<Separator/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button x:Name="graphButtonStackPanel" Content="Graph" Click="graphButtonStackPanel_Click" DockPanel.Dock="Top" HorizontalAlignment="Right"/>
</StackPanel>
StackPanels
stack things, if you want your content stretched use a Grid
. e.g.
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition /> <!-- Takes remaining space -->
<ColumnDefinition Width="Auto"/> <!-- Resizes to content -->
<Grid.ColumnDefinitions>
<!-- ... -->
</Grid>