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.