How to make items in a DockPanel expand to fit all available space in WPF? How to make items in a DockPanel expand to fit all available space in WPF? wpf wpf

How to make items in a DockPanel expand to fit all available space in WPF?


Use a DockPanel instead. StackPanel explicitly doesn't care about visible space, whereas DockPanel does all of it's size calculation based on available space.

Update:

In addition, in my experience, putting the body of the window into a View, and only having the View in the Window makes for a better Auto Size experience.

For some reason putting all of the children directly into the Window seems to not auto size very well.

Update 2:

I would remove the explicit DockPanel.Dock attribute from the element that you want to stretch (fill) the unused space.


This should do it - I set it up so that the TreeView and the ListView shared the main view 50/50; if you don't want that, set it to 'Auto' and '*' or something. Use "LastChildFill" to your advantage!

<Window x:Class="Clippy.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="MainWindow" Height="400" Width="600" MinHeight="400" MinWidth="600" Loaded="Window_Loaded" SizeChanged="Window_SizeChanged">    <DockPanel LastChildFill="True">        <Menu Width="Auto" DockPanel.Dock="Top" />        <ToolBar Width="Auto" DockPanel.Dock="Top" />        <StatusBar DockPanel.Dock="Bottom" />        <Grid>            <Grid.RowDefinitions>                <RowDefinition Height="0.5*" />                <RowDefinition Height="0.5*" />            </Grid.RowDefinitions>            <TreeView Name="categoryTreeView" Grid.Row="0" />            <ListView Name="clipListView" Grid.Row="1" />        </Grid>    </DockPanel></Window>


Set width and height properties to "auto"