Search code examples
wpflistboxpanelstackpanel

List not filling maximum space in Stack panel


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>

Solution

  • 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>