WPF: LISTBOX WITH WRAPPANEL, VERTICAL SCROLLING PROBLEM

Ankit Singh

Total Post:341

Points:2389
Posted by  Ankit Singh
WPF 
WPF
 8059  View(s)
Ratings:
Rate this:

I have a UserControl (XAML below) that has a ListBox that I want to display images inside a WrapPanel, where images are displayed as many as will fit on one row and then wrap onto the next row etc. It works, except when the ListBox grows higher than the available space in the window, I'm not getting a vertical scrollbar, i.e. the contents get clipped. If I set a fixed height on the ListBox, the scrollbar appears and works as expected. How can I get this listbox to grow to the available space and then show a vertical scrollbar? This control is inside StackPanel inside a Grid in the main window. If I wrap the StackPanel inside a ScrollViewer, I get the scrollbar I'm after, but that's not really a good solution if I wanted to add some more controls to the UserControl above the ListBox (e.g. image size "zoom" etc) as I wouldn't want them to scroll with the images.

Thanks!! :)

<UserControl x:Class="GalleryAdmin.UI.GalleryView"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <ListBox Name="itemListBox" BorderThickness="0" ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">

        <ListBox.ItemTemplate>

            <DataTemplate>

                <StackPanel Background="LightGray" Margin="5" >

                    <StackPanel Margin="5">

                        <Image Source="{Binding Path=LocalThumbPath}" Height="100" />

                        <TextBlock Text="{Binding Path=Name}" TextAlignment="Center"></TextBlock>

                    </StackPanel>

                </StackPanel>

            </DataTemplate>

        </ListBox.ItemTemplate>

        <ListBox.ItemsPanel>

            <ItemsPanelTemplate>

                <WrapPanel />

            </ItemsPanelTemplate>

        </ListBox.ItemsPanel>

    </ListBox>

  1. ezra heywood

    Post:145

    Points:1019
    Re: WPF: ListBox with WrapPanel, vertical scrolling problem

    Hi Ankit,

    Well, I finally stumbled upon the solution. I was adding my UserControl to a placeholder panel that looked like this:

                <ScrollViewer Margin="20" >

                    <StackPanel Name="contentPanel"></StackPanel>

                </ScrollViewer>

    However, when I switched it to a Grid instead, things started to work the way I wanted:

    <Grid Name="contentPanel" Margin="20" />

    I think it has to do with the StackPanel not taking up all the vertical space by default, like the Grid is doing.

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!