23
votes

Hi i have a ListView that binds to a collection. I set the height of the ListView to auto for it to take up all the space in the region. However there is not scrollbar after i set the height to auto. If i give it a height then the scrollbar would show up.

the markup is pretty much like the following

<Grid>
   <StackPanel>
      <Expander>
          <DataGrid>
      <Expander>
          <ListView>
3
I have a hunch that "any thoughts?" isn't your actual question here. - BoltClock
What kind of container/panel is the ListView inside? - Joel B Fant

3 Answers

59
votes

I have a hunch that your ListView is inside a panel that allows it to expand vertically without limit.

If you put a ListView inside a StackPanel, for example, the ListView's height can exceed the height of the StackPanel. The ListView has increased its height to show all its items, as far as it's concerned, thus no scrollbar.

However, if you change that StackPanel to a Grid, where controls automatically try to fit themselves inside that area, the ListView will automatically have a scrollbar when it contains more items than it can display.

This will probably be solved most simply by adjusting your layout that contains the ListView.

10
votes

Instead of setting

<RowDefinition Height="auto"/>

set:

<RowDefinition Height="1*"/>
4
votes

Why should it show a scrollbar if there is nothing to scroll?

If you want to override any default behavior you can set ScrollViewer.VerticalScrollBarVisibility="Visible" on the ListBox.