This is actually super easy to do in XAML, but for whatever reason it caused me some trouble. I wanted a page to have a scrollable list of items that filled the screen, with a bottom row of buttons always visible. I could have used a
StackPanel and set the height of the
ListView so that there was room at the bottom for my buttons, but that seemed hack-ish.
What I wanted was an equivalent of the old
DockPanel. Unfortunately, that is no longer available for some reason.
So, a bit of searching and I stumbled across a technique using the
<Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <ListView Grid.Row="1"></ListView> <Button Grid.Row="2">Footer Button</Button> </Grid>
The important bit here is the
Grid.RowDefinitions section. I define the height of the first row to fill the available space by setting
Height="*". Then, using
Height="Auto", I set the second row to automatically size itself to the height of its controls.
Now my page has a full-size list, with a â€œstickyâ€ footer row. You can define a header row by reversing the order of the
RowDefinition rows, or define your own row and columns to suit your needs.