Stretch empty WPF ListView to take the remaining space Stretch empty WPF ListView to take the remaining space wpf wpf

Stretch empty WPF ListView to take the remaining space


This has nothing to do with the ListView. It is the StackPanel's "fault". In a StackPanel the child items always consume only the space they need (in the direction of the orientation of the StackPanel). That's how the StackPanel is designed. Use a DockPanel instead, there you can make the last item fill up all the space that is left over using LastChildFill="true" (true is default, so no need to explicity specify it).

<DockPanel Background="Green">    <Button DockPanel.Dock="Top">Text</Button>    <ListView DockPanel.Dock="Top">        <ListView.View>            <GridView>                <GridViewColumn/>            </GridView>        </ListView.View>    </ListView>     </DockPanel>


How about using a grid? Grids are made for this kind of layout. The DockPanel is a good suggestion too.

  <Grid>      <Grid.RowDefinitions>      <RowDefinition Height="Auto"/>      <RowDefinition Height="Auto"/>      <RowDefinition Height="*"/>     </Grid.RowDefinitions>   <TextBlock Grid.Row="0" Text="row1"/>   <Button Grid.Row="1" Content="row2"/>   <ListView Grid.Row="2">     <ListViewItem Content="Text"/>     <ListViewItem Content="Text1"/>     <ListViewItem Content="Text2"/>   </ListView>  </Grid>

The important part is the Height="*", this tells the row to take up all available space, you can leave this out if you want as it is the default behaviour.