A: 

Allow me to answer this. I used a Grid with variable row heights and it worked.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="5*"/>
        <RowDefinition Height="5*"/>
    </Grid.RowDefinitions>
    <ContentControl Name="MainRegion" 
                    Grid.Row="0"
             cal:RegionManager.RegionName="SecondRegion"/>
    <ContentControl 
        Name="SecondRegion" 
                    Grid.Row="1"
        cal:RegionManager.RegionName="MainRegion"/>
</Grid>

Strange though that StackPanel and DockPanel doesn't automatically divide their space up equally.

Edward Tanguay
You actually don't need the 5 in Height="5*", just use * in both rows.
Carlo
A: 

StackPanel does not stretch its children to fill the available space (it's a feature).

DockPanel does stretch if you use LastChildFill="true".

Tiberiu Ana