Search code examples
c#wpfxamllistboxexpander

WPF - Scrolling Listbox in an Expander


I have an Expander that I want to have a ListBox in. When the I open the Expander, the ListBox just expands off the screen (rather than expanding to fill what is available and then scrolling).

Here is my XAML:

<DockPanel Margin="266.25,0,455,12" Name="dockPanel1">
    <StackPanel>
        <Expander Header="expander1" Name="expander1" Width="150" HorizontalAlignment="Left">
            <Grid>
                <Label>Testing</Label>
                <ScrollViewer>
                    <ListBox Name="lstBox"  FontSize="14" SelectionChanged="lstBox_SelectionChanged" />
                </ScrollViewer>
            </Grid>
        </Expander>
        <Expander Header="expander2" Name="expander2" Width="150" HorizontalAlignment="Left">
            <Grid >

            </Grid>
        </Expander>
    </StackPanel>
</DockPanel>

When Expander1 is opened then it just expands to the size of the ListBox (off the screen). If I put a size on the grid (Height="275"), then it does not resize with the window.

I want it to stretch to the size of the window, but no more. Is there a way to do that?


Solution

  • You need to set the Height property of ScrollViewer otherwise it will be the same size as it's child. Here is some updated XAML:

    <DockPanel>
        <StackPanel>
            <Expander Header="expander1" Width="150" HorizontalAlignment="Left">
                <StackPanel>
                    <Label>Testing</Label>
                    <ScrollViewer Height="75">
                        <ListBox>
    
                        </ListBox>
                    </ScrollViewer>
                </StackPanel>
            </Expander>
            <Expander Header="expander2">
            </Expander>
        </StackPanel>
    </DockPanel>